2013-09-25 65 views
0

我有一個C#項目使用AnyCPU構建。我們還動態加載一個目前依賴於32位本地DLL的功能。通過關閉此功能,應用程序可以非常高興地作爲64位應用程序運行。因此,Visual Studio確定應用程序將以64位進程運行。要強制應用程序以32位進程運行,我們在主項目上使用CorFlags將其設置爲32位,然後執行Post Build步驟。在Visual Studio外部運行應用程序時,此工作正常。但是,如果我使用F5調試應用程序,則會顯示一個錯誤,指示我有32/64位不匹配。看起來好像Visual Studio已經確定應用程序可以作爲64位進程運行並相應地設置調試器,但不知道我已經運行CorFlags將其強制爲32位。強制使用AnyCPU構建的C#WinForms應用程序作爲32位進程調試

有沒有什麼辦法來強制Visual Studio來調試應用程序作爲32位進程?我希望將平臺目標作爲AnyCPU離開,因爲第三方組件最終將升級到64位。

+0

便宜的解決方法是將另一個項目構建添加爲32位,並將您的AnyCPU EXE作爲程序集加載並從Main運行Main ... –

+0

如果在進程啓動後附加調試器,會發生什麼情況? –

回答

0

它很可能是Visual Studio的vshost在特定版本中構建的應用程序,調試器無法弄清楚它,因爲調試器必須與它調試的exe(以及它的所有組件)。

你可以嘗試在它自己的運行exe文件,只是通過調試菜單安裝過程。可能會爲斷點獲得更好的結果,但如果沒有vshost,它將不會如此冗長。

這只是一種理論,而我目前還沒有足夠的代表處發表評論您原來的線程;所以如果你發現這個不正確,請不要理會。

+0

我們目前使用Attach to Process,但這不是理想的解決方案。 –

+0

你在這裏有什麼是一組非常具體的情況。哦,男孩......哈哈 – 2013-09-25 04:37:56

相關問題