7

我遇到了問題,其中我的vshost.exe文件名與我的實際application.exe文件名不同,這使我無法調試該應用程序。應用程序可執行文件名稱與vshost可執行文件名稱不同

的設置如下:

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

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

現在,由於我無法控制的原因,決定應用程序可執行文件名稱應該包含環境:MyApplication (Release).exe,MyApplication (Debug).exe,MyApplication (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:\代碼\ MySolution \ MyApplication的\ BIN \測試\ MyApplication的(調試).EXE'嘗試調試時出現以下錯誤缺少。請構建項目並重試,或適當地設置OutputPath 和AssemblyName屬性,以指向目標程序集的正確 位置。

有趣的是,如果我改變Debug配置的AssemblyNameMyApplication (Foo),然後在Testing文件夾中的虛擬主機文件也被重命名爲MyApplication (Foo)。所以有些東西強制將Debug配置用於我的Testing配置。但是什麼?

目前我可以通過啓動應用程序然後附加Visual Studio調試器來解決它,但這是在浪費我的時間。構建安裝程序也不是問題,因爲vshost文件被忽略。

到目前爲止谷歌並沒有真正有用。大多數搜索結果解釋了什麼是vshost文件以及它如何工作,但這不是我所需要的。我需要知道爲什麼vshost文件命名不同,以及我如何解決這個問題。

回答

0

另一個解決方法可以禁用vshost選項:

轉到項目+屬性,調試選項卡,取消勾選「啓用在Visual Studio宿主進程」選項。

相關問題