在.NET 4.0上使用.NET 3.5的dll

3

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

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

如果我使用System.Core,为什么只需要使用它呢?我知道System.Core是在.NET 3.5中添加的,但它对.NET 4.0有什么区别呢?其他引用甚至来自.NET 1.1或2.0,为什么它们不会出现问题呢?


不,还有其他问题。你确定这不是一个拥有.NET 4.5的机器吗?扩展方法存在问题。 - Hans Passant
有用的问题;我看到你还有一些未回答的有用问题,并给它们点了赞,让它们更受关注。 - Tom
1个回答

1
我认为原因在于.NET 4中System.Func<TResult>已经从System.Core.dll移动到mscorlib.dll。因此,即使您可以编译该项目,由于无法在mscorlib.dll中找到该方法,它可能无法运行。
您可以通过更新项目文件以引用.NET 3.5中的System.Core.dll来解决此问题,如下所示。
<Reference Include="System.Core"> 
    <RequiredTargetFramework>3.5</RequiredTargetFramework> 
</Reference>

即使在那些dll中不使用System.Func<TResult>,这是否仍然会是一个问题? - user968698

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接