.NET 4.0 上的 .NET 3.5 dll

标签 .net dll

我注意到我可以在只安装 .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/

相关文章:

c# - 在 C# 中从 XML 解析为 JSON 时如何避免 ROOT 元素

c++ - 为什么在C++中调用库(建库成功)会出现链接错误

c# - 应用程序处于中断模式。您的应用进入了中断状态,

c# - 获取远程主机的MAC地址

c# - 使用 C# 播放 MIDI 声音的最佳方式

c# - 在上一个异步操作完成之前,第二个操作在此上下文中启动

c++ - 与 Python 一起运行 C++ 代码并与之交互

c++ - OpenCV - 缺少调试 DLL 库

c# - 从 C# 调用 Delphi 6 DLL 会导致不同的舍入?

windows - 延迟加载 DLL 对于避免链接特定函数有用吗?