【问题标题】:.NET 3.5 dll on .NET 4.0.NET 4.0 上的 .NET 3.5 dll
【发布时间】:2012-10-24 15:40:26
【问题描述】:

我注意到我可以在只安装了 .NET 4.0 的计算机上运行一些带有为 .NET 3.5 编译的 dll 的 .NET 应用程序,而无需进行任何更改。 但是并不总是这样:如果我在应用程序中使用了一些使用 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 的机器吗?扩展方法存在问题。
  • 有用的问题;我看到您还有一些未回答的有用问题,并给了他们一个赞成票,以使它们更多地受到关注。

标签: .net dll


【解决方案1】:

我认为原因在于 .NET 4 System.Func&lt;TResult&gt; 已从 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 也会有问题吗?
猜你喜欢
  • 2012-06-21
  • 1970-01-01
  • 2011-04-07
  • 1970-01-01
  • 2011-09-07
  • 1970-01-01
  • 2011-05-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多