截至今天,我的项目中有一个App.config
文件。
我在程序中使用我的配置设置,如下所示:
ConfigurationManager.AppSettings["FileDir"];
其中 FileDir 是App.config
中的设置,定义如下:
<appSettings>
<add key="FileDir" value="C:\MyFolder" />
</appSettings>
在我的构建文件夹(是Debug
或Release
)中,如果我的项目名为MyProject.exe.config
,该文件将显示为MyProject
。
我想添加多个类似的配置文件,它们具有完全相同的变量但值不同,我想使用命令行参数指向配置文件,以便我可以重用相同的程序,但设置不同。 / p>
如何告诉我的程序选择哪个配置文件?
答案 0 :(得分:1)
我会做这样的事情:
<appSettings>
<add key="WordV1" value="abc" />
<add key="WordV2" value="def" />
<add key="WordV3" value="ghi" />
</appSettings>
string word = ConfigurationManager.AppSettings["WordV" + user.version];
答案 1 :(得分:0)
正常的方法是拥有基于构建配置应用的转换文件。所以你仍然只有一个配置文件,但它根据构建的预期用途而不同地构建。
像SlowCheetah这样做的事情,或者如果您正在使用octopus deploy之类的部署进行部署,那么可以在部署时执行此操作。答案 2 :(得分:0)
另一种解决方案如何,特别是在陈述之后:
截至今天,我的项目中有一个App.config文件。
为什么你没有自己的设置类?您可以使用代码中的一组默认设置来维护它 - 这比尝试维护多个App.config文件要简洁得多。类似的东西:
sync.Map
您可以拥有不同的实例,或者根据您需要执行的操作,您可以加载第二组设置:
[Serializable]
public class AppSettings
{
public string FileDir { get; set; }
public AppSettings()
{
FileDir = string.Empty;
}
public AppSettings(string fDir)
{
FileDir = fDir;
}
public void SetDefault()
{
FileDir = "SomeDefault";
}
}
坚持以上的课程:
m_dSettings = SettingsIO.GetSettings(Path.Combine(Application.StartupPath, "DefaultSettings.xml"));
m_cSettings = SettingsIO.GetSettings(Path.Combine(Application.StartupPath, "CustomSettings.xml"));
m_eSettings = new AppSettings("F:\\Dir");
SettingsIO.WriteSettings(m_dSettings, Path.Combine(Application.StartupPath, "DefaultSettings.xml"));
SettingsIO.WriteSettings(m_dSettings, Path.Combine(Application.StartupPath, "CustomSettings.xml"));
SettingsIO.WriteSettings(m_eSettings, Path.Combine(Application.StartupPath, "ExtraSettings.xml"));