2010-03-23 122 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

相關問題