我有一个配置,例如,外部服务器的主机名,用于存储存储在设置文件中的文件(如图像和PDF)。这些设置存储在名为CommonSettings的类库中。此路径的值可能会根据部署应用程序的环境而更改。这是:
"localhost"
"qa-external-files"
"prod-external-files"
然后我必须在代码中访问这些设置,但我需要从代码中解除每个环境的设置值。例如,我希望实现类似的功能(使用C#在Console Application中进行测试):
using CommonSettings;
String externalServerHostName = CommonSettings.Properties.Setting.Default.ExternalServerHostName;
Console.Write(externalServerHostName);
//prints localhost when I execute this from my machine
//prints qa-external-files when I execute this from the qa environment
在Java中,我可以通过创建文件夹结构来处理这种情况,每个环境都有一个文件夹,然后每个文件夹包含文件(属性文件)中的相关设置,并使用自动构建工具(maven)生成仅包含库的文件夹属性文件根据我想要/需要的环境。
我可以使用.net进行类似的处理吗?或者我应该使用构建工具来处理这个问题吗?
答案 0 :(得分:1)
是否可以将配置设置存储在app.config文件而不是类库中?如果是这样,您可以根据您所处的环境将转换应用于app.config。您应该在构建期间而不是在运行时期间处理转换是正确的。
如果您有ASP.Net应用程序,则web.config转换更容易:
http://msdn.microsoft.com/en-us/library/dd465326(v=vs.110).aspx
如果你使用的是WPF或者不使用ASP,那么在app.config上进行转换需要做更多的工作。幸运的是,Visual Studio有一个VSIX文件可以帮助解决这个问题: