สามแนวทางแก้ไขที่เป็นไปได้
ฉันรู้ว่าฉันมางานปาร์ตี้ช้าฉันกำลังมองหาวิธีแก้ปัญหาใหม่ ๆ สำหรับปัญหาการตั้งค่าตัวแปรหรือไม่ มีคำตอบไม่กี่คำตอบที่สัมผัสกับวิธีแก้ปัญหาที่ฉันเคยใช้ในอดีต แต่ส่วนใหญ่ดูเหมือนจะซับซ้อนเล็กน้อย ฉันคิดว่าฉันจะดูวิธีแก้ปัญหาเก่าของฉันและนำไปใช้ร่วมกันเพื่อที่จะช่วยให้ผู้คนที่กำลังดิ้นรนกับปัญหาเดียวกัน
สำหรับตัวอย่างนี้ฉันใช้การตั้งค่าแอพต่อไปนี้ในแอปพลิเคชันคอนโซล:
<appSettings>
<add key="EnvironmentVariableExample" value="%BaseDir%\bin"/>
<add key="StaticClassExample" value="bin"/>
<add key="InterpollationExample" value="{0}bin"/>
</appSettings>
1. ใช้ตัวแปรสภาพแวดล้อม
ฉันเชื่อว่าคำตอบของ autocro autocroสัมผัสได้ ฉันแค่ใช้งานที่ควรจะเพียงพอเมื่อสร้างหรือดีบักโดยไม่ต้องปิดวิชวลสตูดิโอ ฉันใช้วิธีนี้ย้อนกลับไปในวันที่ ...
'
private void Test_Environment_Variables()
{
string BaseDir = ConfigurationManager.AppSettings["EnvironmentVariableExample"];
string ExpandedPath = Environment.ExpandEnvironmentVariables(BaseDir).Replace("\"", "");
Console.WriteLine($"From within the C# Console Application {ExpandedPath}");
}
'
2. ใช้การแก้ไขสตริง:
ใช้ฟังก์ชัน string.Format ()
`
private void Test_Interpollation()
{
string ConfigPath = ConfigurationManager.AppSettings["InterpollationExample"];
string SolutionPath = Path.GetFullPath(Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, @"..\..\"));
string ExpandedPath = string.Format(ConfigPath, SolutionPath.ToString());
Console.WriteLine($"Using old interpollation {ExpandedPath}");
}
`
3. การใช้คลาสคงที่นี่เป็นวิธีแก้ปัญหาที่ฉันใช้เป็นส่วนใหญ่
`
private void Test_Static_Class()
{
Console.WriteLine($"Using a static config class {Configuration.BinPath}");
}
`
`
static class Configuration
{
public static string BinPath
{
get
{
string ConfigPath = ConfigurationManager.AppSettings["StaticClassExample"];
string SolutionPath = Path.GetFullPath(Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, @"..\..\"));
return SolutionPath + ConfigPath;
}
}
}
`
รหัสโครงการ:
App.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
<appSettings>
<add key="EnvironmentVariableExample" value="%BaseDir%\bin"/>
<add key="StaticClassExample" value="bin"/>
<add key="InterpollationExample" value="{0}bin"/>
</appSettings>
</configuration>
Program.cs
using System;
using System.Configuration;
using System.IO;
namespace ConfigInterpollation
{
class Program
{
static void Main(string[] args)
{
new Console_Tests().Run_Tests();
Console.WriteLine("Press enter to exit");
Console.ReadLine();
}
}
internal class Console_Tests
{
public void Run_Tests()
{
Test_Environment_Variables();
Test_Interpollation();
Test_Static_Class();
}
private void Test_Environment_Variables()
{
string ConfigPath = ConfigurationManager.AppSettings["EnvironmentVariableExample"];
string ExpandedPath = Environment.ExpandEnvironmentVariables(ConfigPath).Replace("\"", "");
Console.WriteLine($"Using environment variables {ExpandedPath}");
}
private void Test_Interpollation()
{
string ConfigPath = ConfigurationManager.AppSettings["InterpollationExample"];
string SolutionPath = Path.GetFullPath(Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, @"..\..\"));
string ExpandedPath = string.Format(ConfigPath, SolutionPath.ToString());
Console.WriteLine($"Using interpollation {ExpandedPath}");
}
private void Test_Static_Class()
{
Console.WriteLine($"Using a static config class {Configuration.BinPath}");
}
}
static class Configuration
{
public static string BinPath
{
get
{
string ConfigPath = ConfigurationManager.AppSettings["StaticClassExample"];
string SolutionPath = Path.GetFullPath(Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, @"..\..\"));
return SolutionPath + ConfigPath;
}
}
}
}
เหตุการณ์ก่อนสร้าง:
การตั้งค่าโครงการ -> สร้างกิจกรรม