.NET 4.0上的.NET 3.5 dll

.NET 4.0上的.NET 3.5 dll,.net,dll,.net,Dll,我注意到,我可以在只安装了.NET 4.0的计算机上运行一些为.NET 3.5编译的dll的.NET应用程序,而无需进行任何更改。 但是,情况并非总是这样:如果我在使用System.Core引用的应用程序中使用某些dll,则应用程序将不会启动,因为它找不到System.Core,我必须将以下内容添加到名称.exe.config中: <configuration> <startup> <supportedRuntime version="v4.0" /&g

我注意到,我可以在只安装了.NET 4.0的计算机上运行一些为.NET 3.5编译的dll的.NET应用程序,而无需进行任何更改。 但是,情况并非总是这样:如果我在使用System.Core引用的应用程序中使用某些dll,则应用程序将不会启动,因为它找不到System.Core,我必须将以下内容添加到名称.exe.config中:

<configuration>
  <startup>
    <supportedRuntime version="v4.0" />
  </startup>  
</configuration>


为什么只有当我使用System.Core时才需要使用这个?我知道System.Core是在.NET3.5中添加的,但它与.NET4.0有什么区别?其他引用甚至比.NET 1.1或2.0更旧,所以为什么它们不给出问题?

我认为原因在于.NET 4
System.Func
已从System.Core.dll移动到mscorlib.dll。因此,即使您可以编译该项目,它也可能无法运行,因为它在mscorlib.dll中找不到该方法

您可以通过将项目文件更新为.NET 3.5中的reference System.Core.dll来修复此问题,如下所示

<Reference Include="System.Core"> 
    <RequiredTargetFramework>3.5</RequiredTargetFramework> 
</Reference>

3.5

不,还有别的事情。你确定这不是一台安装了.NET 4.5的机器吗?扩展方法有问题。有用的问题;我看到你还有一些没有回答的有用的问题,并给了他们一个向上投票的机会,让他们更引人注目。即使你在那些dll中不使用System.Func,这会是一个问题吗?