在 .net 4 中开发的 Windows 应用程序引用在 .net 3.5 中开发的程序集,是否需要安装 .net 4 和 .net 3.5 才能运行该应用程序?
我怀疑是这样,正如我的观察之一。 此外,这感觉很合乎逻辑,因为两者的执行都需要不同的运行时。
[编辑]
我恍然大悟:)所以,这是我真正的问题 https://stackoverflow.com/questions/5525531/one-of-the-assemblies-in-ms-expression-encoder-sdk-fails-to-resolve这个问题在 SO 已经有一段时间没有得到答复了。如果你们能解决这个问题,我会很高兴!
应用程序的 app.config 已包含以下行。
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
我不确定您是否需要安装 3.5。.net 4.0 CLR 能够加载用 .net 2.0 及更高版本编写的程序集,并且自 .net4 和 2.0 程序集以来,它们似乎不太可能运行不同版本的 CLR可以互相调用,无需任何互操作。
我所知道的是,如果您的可执行文件是 .net 4.0 程序集,则在某些情况下您可能需要修改 app.config 才能加载 .net 2.0 程序集。这是因为安全模型从.net 2.0中的CAS变成了简化系统 http://msdn.microsoft.com/en-us/library/ff527276.aspx in 4.0
对我来说,这似乎进一步表明,在将 .net 2.0 程序集加载到 .net 4.0 进程中时,实际上并未使用 .net 2.0 clr。
(.net 2.0和4.0指的是公共语言运行时版本,2.0、3.0和3.5均使用2.0版本的CLR)
-edit-
根据这个线程 http://social.msdn.microsoft.com/Forums/en/netfxgeneralprerelease/thread/bef443cc-5413-4322-8d9a-117abd2386d3,如果进程是 4.0,则不需要 .net 3.5 来加载 3.5 程序集。
-edit2-
以下是修改 app.config 的方法,让 .net 4.0 可执行文件在所有情况下(例如运行网络驱动器)加载 2.0 程序集
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
</configuration>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)