2013-04-11 80 views
1

我在做什麼:如何使工作'不要複製'app.config輸出目錄?

  1. 創建新的WPF應用程序項目
  2. 添加App.config複製到項目
  3. 構建項目
  4. 打開App.config屬性並設置「複製到輸出目錄」參數到
  5. 轉到「不要複製」
  6. 進行一些更改App.config複製到bin\Debug文件夾,並設置爲只讀屬性文件WpfApplication1.exe.config
  7. 重建項目

結果:

Error 2 Unable to copy file "App.config" to "bin\Debug\WpfApplication1.exe.config". Access to the path 'bin\Debug\WpfApplication1.exe.config' is denied. WpfApplication1 

爲什麼VS仍試圖複製該文件,以及如何迫使它停止這樣做呢?

P.S.我正在幾臺遠程計算機上調試我的應用程序(根據需要在它們之間切換),並且每個計算機都應該有自己的配置。這就是爲什麼我不希望VS覆蓋每個版本的配置。

+0

爲什麼你不想VS覆蓋配置? – alex 2013-04-11 13:27:01

+0

可能的重複[如何防止將app.config集成到.net庫(dll)](http://stackoverflow.com/questions/4668910/how-do-i-prevent-the-app- config-from-being-integrated-into-a-net-library-dll) – 2013-04-11 13:27:38

回答

0

如果你真的需要強制更改你的配置停止VS,要做到這一點,最簡單的方法,可以寫一個簡單的腳本,它會保護配置:

添加腳本備份配置執行預先建立和恢復配置到後續構建。 備份配置應該將配置複製到某個安全的地方,並在VS進行更改後將其複製回來。

0

App.config的默認值是「不要複製」,並且不會在該構建過程的該部分中複製。 如果您希望構建版本(Debug_1,Debug_2,...)的不同版本使預構建事件腳本根據構建類型將App.config.debug_1或App.config.debug_2 ...複製到App.config。

我不認爲你可以改變視覺工作室複製app.config的方式。但我認爲這可能是您的解決方案。把它放在你程序的開始。

#if DEBUG_1 
    AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", "debug_1.config"); 
#endif 
#if DEBUG_2 
    AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", "debug_2.config"); 
#endif 
... 

這樣配置文件將被複制,但不會被使用。只需複製該配置並進行所需的更改即可。

+0

因此,構建過程中實際複製.config的那個神祕部分不能被修改\配置?唯一的方法是預製版本的這個技巧? – 2013-04-11 15:27:46

+0

要麼預先構建副本,要麼設置配置文件名,看起來更新的答案。 – IvanP 2013-04-12 19:18:48

相關問題