Visual Studio Build&托管流程

时间:2017-02-07 22:12:19

标签: .net wpf visual-studio app-config vshost.exe

我正在开发一个利用WCF服务模型概念的应用程序,通过远程服务器上的IIS处理来自WPF客户端的数据库调用。为了保证我可以修改&测试服务层而不破坏生产应用程序,我已经部署了第二个“调试”服务层,并希望通过在“Debug”和“Release”之间交换构建配置,在Visual Studio中动态切换。为此,我保留了两个单独的App.config文件,并根据所选的构建配置运行Post-Build事件:

if "Debug"=="$(ConfigurationName)" xcopy "$(ProjectDir)App_Debug.config" "$(TargetPath).config" /Y
if "Release"=="$(ConfigurationName)" xcopy "$(ProjectDir)App_Release.config" "$(TargetPath).config" /Y
if "Debug"=="$(ConfigurationName)" xcopy "$(ProjectDir)App_Debug.config" "$(TargetDir)$(TargetName).vshost.exe.config" /Y
if "Release"=="$(ConfigurationName)" xcopy "$(ProjectDir)App_Release.config" "$(TargetDir)$(TargetName).vshost.exe.config" /Y

这有效,我检查输出目录,他们有适当的连接字符串和参数来访问所需的服务。但是,当我点击Visual Studio中的“开始”按钮时,它将使用我的项目中的App.config文件覆盖这两个配置文件...如果我删除或重命名App.config,那么我的后期构建事件将失败。

我注意到的下一件事是禁用Visual Studio托管进程(vshost.exe)解决了覆盖问题,除了VS中的调试变得痛苦慢......这似乎源于重新加载每次都有组件和调试符号。我认为这一点足以让vshost进程保持启用状态,并结合使用它提供的其他任何好处。

为什么vshost会覆盖我的配置文件,即使该解决方案已构建并且是最新的?有什么办法可以阻止vshost或Visual Studio这样做吗?我可以使用其他策略来实现相同的功能吗?回退将是记住在测试或部署时复制和粘贴相应的配置文件,但这是构建过程中的又一步,这对于应用程序的任何新用户来说都是麻烦和困惑的。

0 个答案:

没有答案