3

我注意到我可以运行一些为 .NET 3.5 编译的 dll 的 .NET 应用程序,而无需在仅安装 .NET 4.0 的计算机上进行更改。但是并不总是这样:如果我在应用程序中使用了一些使用 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 还要旧,所以为什么他们不提出问题呢?

4

1 回答 1

1

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

您可以通过将项目文件更新为引用 .NET 3.5 中的 System.Core.dll 来解决此问题,如下所示。

<Reference Include="System.Core"> 
    <RequiredTargetFramework>3.5</RequiredTargetFramework> 
</Reference>
于 2012-10-24T07:40:26.477 回答