2

我在做什么:

  1. 创建新的 WPF 应用程序项目
  2. 将 App.config 添加到项目中
  3. 构建项目
  4. 打开 App.config 属性并将“复制到输出目录”参数设置为“不复制”
  5. 对App.config进行一些更改
  6. 转到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仍然试图复制文件,以及如何强制它停止这样做?

PS 我正在几台远程计算机上调试我的应用程序(根据需要在它们之间切换),每台计算机都应该有自己的配置。这就是为什么我不希望 VS 覆盖每个构建的配置。

4

2 回答 2

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
...

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

于 2013-04-11T14:06:16.587 回答
0

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

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

于 2013-04-11T13:31:02.020 回答