我遇到了問題,其中我的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
配置的AssemblyName
至MyApplication (Foo)
,然後在Testing
文件夾中的虛擬主機文件也被重命名爲MyApplication (Foo)
。所以有些東西強制將Debug
配置用於我的Testing
配置。但是什麼?
目前我可以通過啓動應用程序然後附加Visual Studio調試器來解決它,但這是在浪費我的時間。構建安裝程序也不是問題,因爲vshost文件被忽略。
到目前爲止谷歌並沒有真正有用。大多數搜索結果解釋了什麼是vshost文件以及它如何工作,但這不是我所需要的。我需要知道爲什麼vshost文件命名不同,以及我如何解決這個問題。