我注意到我可以在只安装 .NET 4.0 的计算机上运行一些带有为 .NET 3.5 编译的 dll 的 .NET 应用程序而无需更改。 然而,它并不总是这样:如果我在使用 System.Core 引用的应用程序中使用一些 dll,那么应用程序将无法启动,因为它找不到 System.Core,我必须将以下内容添加到 Name.exe .配置:
<configuration>
<startup>
<supportedRuntime version="v4.0" />
</startup>
</configuration>
为什么只有在使用 System.Core 时才需要使用它?我知道 .NET 3.5 中添加了 System.Core,但它对 .NET 4.0 有何不同?其他引用文献甚至比 .NET 1.1 或 2.0 更早,那么它们为什么不给出问题?
最佳答案
我认为原因在于 .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>
关于.NET 4.0 上的 .NET 3.5 dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13044476/