2010-10-19 29 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

相关问题