2010-10-19 57 views
2

我有一個非常複雜的WPF和C++/CLI應用程序,它是使用.NET 3.5構建的。我們已經遷移到4.0以利用WPF的好處,所以我們在解決方案中的所有項目都以4.0爲目標。爲什麼我的.NET 4目標應用程序需要安裝2.0才能運行?

在運行有我們的XP計算機上的應用程序只是4.0(和MSVC++ 2010 [和2008),一個錯誤對話框會彈出消息:

「要運行該應用程序,您必須首先安裝的一個以下版本的.NET框架:2.0.50727「

如果我去用.NET 4.0安裝.NET 2.0,我的應用程序將運行。

任何人都知道如何調試加載程序集以瞭解發生了什麼?

UPDATE

我只是發現了關於在VS2010的「模塊」窗口,還觀看了在調試器中運行時加載的事件在輸出窗口中的模塊。我可以清楚地看到有一個單獨的.NET 2.0模塊與我的應用程序一起運行。

'Kudu.exe': Loaded 'C:\Windows\SysWOW64\WindowsCodecs.dll', Exports loaded. 
'Kudu.exe': Loaded 'C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll', Exports loaded. 
'Kudu.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4927_none_d08a205e442db5b5\msvcr80.dll', Exports loaded. 

有什麼方法可以看到什麼加載了這個?

+0

哪個4.0變體要定位?哪個安裝?充分?客戶的個人資料? – 2010-10-19 16:48:34

+0

我的目標是客戶端配置文件,並且XP機器已經完全安裝並安裝了VS2010。 – Jippers 2010-10-20 00:49:30

回答

4

好吧,我放棄了,從啓動直到我點擊模塊加載語句,逐行通過我的代碼。不用感謝VS2010的可怕的調用堆棧,並感謝免費的中斷點,這是我引用了現在不贊成使用的StrongName.h函數來驗證我們的程序集。

.NET 4現在使用MetaHost.h和ICLRStrongName函數。

那裏真的需要是一個關於這個編譯器的警告。

3

檢查解決方案中每個項目的目標框架。
另外,請檢查對象瀏覽器的我的解決方案視圖,並確保您沒有看到mscorlib [2.0.0.0]

也可能是您引用了一個爲.Net 2.0編譯的獨立DLL。

+0

我的所有項目都是針對.NET 4.0的,所以這不是問題。我在對象瀏覽器中看到了幾個不在4.0安裝位置的引用。 Microsoft.mshtml.dll,Microsoft.OFfice.Interop.Outlook,Office.dll和stdole.dll。 Mshtml是我需要的瀏覽器,Office的東西是VS2010中MS Office工具的一部分,但我不確定stdole。也可能是辦公室事物的一部分。 – Jippers 2010-10-20 00:52:14

相關問題