2010-03-23 151 views
4

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

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

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

从你的答案,这听起来像这是一个问题,我只需要解决。

回答

2

更好的问题是:你为什么想要?有什么问题影响到您的默认设置?

也就是说,如果你喜欢,你可以通过编程的方式加载配置文件,你可以随心所欲地命名它。 This answer到类似的问题链接到你需要知道的所有。

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”添加到您的项目,并确保它会被“复制到输出目录如果更新”。

这工作 - 你基本上可以加载任何你想要的文件 - 但它是一个有点杂牌仍然的...

0

实际上假设你wantt有一个中央配置 - 解决方法很简单:DONT USEE默认这个配置文件... ...但是滚动你自己的机制。读取XML文件并不难。

+0

这听起来并不正确!你为什么不想使用可用的内置功能,同时又很容易使用和方便? – tzup 2010-03-23 13:41:59

+2

,因为您可能有20个.exe文件都在相同的文件夹中,并且都转到相同的设置。将它们保持在20个不同的配置文件中几乎不是“非常容易和方便”的。加载一个“已知的配置文件”是每个应用程序的单线程,并且可以是强类型的。并非每个应用程序都是一个小型网站,tzup。有些是一些或更复杂。 – TomTom 2010-03-23 13:47:07

+0

+1,不值得一个downvote ...如果它的一个中央配置文件然后是的,去“自己滚”是一种可能的解决方案 – 2010-03-23 14:38:33

相关问题