তিনটি সম্ভাব্য সমাধান
আমি জানি আমি পার্টিতে দেরি করে আসছি, আমি ভেরিয়েবল কনফিগারেশন সেটিংস সমস্যার কোনও নতুন সমাধান আছে কিনা তা সন্ধান করছিলাম। কয়েকটি উত্তর রয়েছে যা আমি অতীতে ব্যবহার করেছি এমন সমাধানগুলিকে স্পর্শ করে তবে বেশিরভাগটিই কিছুটা সংশ্লেষিত বলে মনে হয়। আমি ভেবেছিলাম আমি আমার পুরানো সমাধানগুলি সন্ধান করব এবং বাস্তবায়নগুলি একসাথে রেখে দেব যাতে এটি একই সমস্যার সাথে লড়াই করা লোকদের সহায়তা করতে পারে।
এই উদাহরণের জন্য আমি কনসোল অ্যাপ্লিকেশনটিতে নিম্নলিখিত অ্যাপ্লিকেশন সেটিংসটি ব্যবহার করেছি:
<appSettings>
<add key="EnvironmentVariableExample" value="%BaseDir%\bin"/>
<add key="StaticClassExample" value="bin"/>
<add key="InterpollationExample" value="{0}bin"/>
</appSettings>
1. পরিবেশ পরিবর্তনশীল ব্যবহার করুন
আমি বিশ্বাস করি অটোক্রো অটোক্রোর উত্তর এতে স্পর্শ করেছে। আমি কেবল একটি বাস্তবায়ন করছি যা ভিজ্যুয়াল স্টুডিও বন্ধ না করেই বিল্ডিং বা ডিবাগিংয়ের সময় পর্যাপ্ত হওয়া উচিত। আমি আবার এই সমাধানটি আবার ব্যবহার করেছি ...
'
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}");
}
'
২. স্ট্রিং ইন্টারপোলেশন ব্যবহার করুন:
স্ট্রিং.ফর্ম্যাট () ফাংশনটি ব্যবহার করুন
`
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}");
}
`
৩. স্ট্যাটিক ক্লাস ব্যবহার করা, এটি বেশিরভাগ ক্ষেত্রেই আমি সমাধান করি।
`
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>
প্রোগ্রাম.সি
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;
}
}
}
}
প্রাক-বিল্ড ইভেন্ট:
প্রকল্পের সেটিংস -> ইভেন্টগুলি তৈরি করুন