如何让app'config工作'不要复制'到输出目录?

时间:2013-04-11 13:24:07

标签: c# .net visual-studio-2010 build

我在做什么:

  1. 创建新的WPF应用程序项目
  2. 将App.config添加到项目
  3. 构建项目
  4. 打开App.config属性并将“复制到输出目录”参数设置为“不复制”
  5. App.config
  6. 进行一些更改
  7. 转到bin\Debug文件夹并将只读属性设置为文件 WpfApplication1.exe.config
  8. 重建项目
  9. 结果:

    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覆盖每个构建的配置。

2 个答案:

答案 0 :(得分:0)

如果你真的需要强制阻止VS更改配置,最简单的方法就是编写简单的脚本来保护配置:

将脚本backup-config的执行添加到预构建和restore-config到构建后。 备份配置应该将配置复制到安全的地方,并且在VS更改之后恢复应该将其复制回来。

答案 1 :(得分:0)

App.config的默认值是“不复制”,并且不会复制到该构建过程的那一部分。 如果您需要不同版本的版本(Debug_1,Debug_2,...),请根据构建类型将预构建事件脚本复制到App.config.debug_1或App.config.debug_2,...到App.config。

我认为你不能改变visual studio复制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
...

这样配置文件将被复制,但不会被使用。只需复制该配置并进行所需的更改即可。