应用程序可执行文件名与vshost可执行文件名不同

时间:2014-02-19 14:23:21

标签: visual-studio-2012 msbuild visual-studio-debugging csproj

我遇到一个问题,我的vshost.exe文件名与我的实际application.exe文件名不同,导致我无法调试应用程序。

设置如下:

- MySolution
    - Installer.Release
    - Installer.Debug
    - Installer.Testing
    - MyApplication

我正在使用Visual Studio 2012,.NET 4.0和InstallShield LE。

现在,由于我无法控制的原因,决定应用程序可执行文件名称应包含以下环境:MyApplication (Release).exeMyApplication (Debug).exeMyApplication (Testing).exe

通过将.csproj文件修改为以下内容,可以轻松完成此操作:

<AssemblyName>MyApplication (Release)</AssemblyName>
<AssemblyName Condition="'$(Configuration)' == 'Debug'">MyApplication (Debug)</assemblyName>
<AssemblyName Condition="'$(Configuration)' == 'Testing'">MyApplication (Testing)</AssemblyName>

Debug中构建应用程序时,它会在bin/Debug文件夹中生成以下文件:

MyApplication (Debug).exe
MyApplication (Debug).exe.config
MyApplication (Debug).vshost.exe
MyApplication (Debug).vshost.manifest

到目前为止一切顺利。

Testing中构建应用程序时,它会在bin/Testing文件夹中生成以下文件:

MyApplication (Testing).exe
MyApplication (Testing).exe.config
MyApplication (Debug).vshost.exe
MyApplication (Debug).vshost.manifest

正如您所看到的,生成的vshost文件的命名方式不同,这会导致Visual Studio在尝试调试时抛出以下错误:

  

Visual Studio无法启动调试,因为调试目标   'D:\ Code \ MySolution \ MyApplication \ bin \ Testing \ MyApplication(Debug).exe'   不见了。请构建项目并重试,或设置OutputPath   和AssemblyName属性适当指向正确的   目标装配的位置。

有趣的是,如果我将AssemblyName配置的Debug更改为MyApplication (Foo),则Testing文件夹中的vhost文件也会重命名为MyApplication (Foo) 。因此有些事情迫使我的Debug配置使用Testing配置。但是什么?

目前我可以通过启动应用程序然后附加Visual Studio调试器来解决它,但它浪费了我的时间。构建安装程序时也不是问题,因为简单地忽略了vshost文件。

到目前为止,谷歌并没有真正的帮助。大多数搜索结果都解释了什么是vshost文件以及它是如何工作的,但这不是我需要的。我需要知道为什么vshost文件的命名方式不同以及如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

另一种解决方法是禁用vshost选项:

转到Project + Properties,Debug选项卡,取消选中&#34;启用Visual Studio托管过程&#34;选项。