如何更改.net项目中默认.config文件的名称

时间:2010-03-23 13:20:03

标签: .net configuration config

我有一个名为FooConsole的.net控制台应用程序。当我构建和部署它时,我看到我项目中的App.config文件已部署到FooConsole.exe.config

如何将.config文件部署到Foo.config而不是FooConsole.exe.config,并将其作为默认的.config文件读取?

更新:我意识到这听起来像是一项任意要求。我希望能够编写可以为不同部署复制自定义.config文件的脚本。但是,如果我的.config文件名必须依赖于.exe的名称,那么如果某人(可能)决定更改.exe文件的名称,它将会破坏我的脚本。

从您的回答中,听起来这是一个我只需要解决的问题。

4 个答案:

答案 0 :(得分:3)

虽然您无法更改默认配置文件的内容,但您可以告诉此配置文件从其他文件中提取其设置。 e.g。

<configuration>
    <appSettings file="MyOther.config"></appSettings> 
</configuration>

http://msdn.microsoft.com/en-us/library/ms228154.aspx

答案 1 :(得分:2)

更好的问题是:你为什么要这样做?困扰你的默认有什么问题?

也就是说,如果您愿意,可以通过编程方式加载配置文件,并且可以随意命名。 This answer类似的问题链接到您需要知道的所有内容。

答案 2 :(得分:2)

你做不到。 .NET配置系统将始终尝试查找(exe文件名).config - 对于foo.exe,.NET将始终查找foo.exe.config。没有切换或设置或改变它的东西。

如果你真的想要偏离这个约定(真的吗?),那么你需要使用System.Configuration命名空间中的Configuration类来自己动手。

如果你真的必须更改配置名称(再次:真的吗?为什么?),然后使用此代码:

 ExeConfigurationFileMap map = new ExeConfigurationFileMap();
 map.ExeConfigFilename = "Custom.config";  // give it the name you want

 Configuration custom = 
     ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);

 string value = custom.AppSettings.Settings["key"].Value;

您需要在项目中添加“custom.config”,并确保“如果更新”将其“复制到输出目录”。

这样做 - 你基本上可以加载你想要的任何文件 - 但它仍然是一个kludge ...

答案 3 :(得分:0)

实际上假设您需要一个集中配置 - 解决方案很简单:不要使用默认的配置文件... ...但滚动你自己的机制。读取XML文件并不难。