.net 4向后兼容

Tra*_*ife 2 .net-4.0 backwards-compatibility .net-3.5

在.net 4中开发的Windows应用程序是否会引用.net 3.5中开发的程序集,是否需要安装.net 4和.net 3.5才能运行应用程序?

我怀疑是这样,这是我的观察之一.此外,它感觉合乎逻辑,因为它们都需要不同的运行时来执行.

[编辑]我开悟了:)所以,这是我真正的问题,在这里仍然没有回答一段时间在SO.如果你们能解决问题,我们会很高兴的!

应用程序的app.config已经有以下几行.

  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
Run Code Online (Sandbox Code Playgroud)

aL3*_*891 7

我不确定你是否需要安装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更改为4.0中的简化系统

这对我来说似乎进一步表明.net 2.0 clr在将.net 2.0程序集加载到.net 4.0进程时实际上并未使用.

(.net 2.0和4.0引用公共语言运行时版本,2.0,3.0和3.5都使用2.0版本的CLR)

-编辑-

根据这个线程,如果进程是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>
Run Code Online (Sandbox Code Playgroud)