在 4 中使用 3.5 程序集

本文关键字:程序集 | 更新日期: 2023-09-27 18:32:21

我有一个在使用 .Net Framework 3.5 时可以完美运行的程序集,但在 4 中使用它时,它会给出无法加载程序集的错误。有谁知道这个问题的解决方案?(无论如何,我都无法更改程序集或更改项目目标框架,因为这会删除应用程序的目的)编程代码是 C#。

基本上:我正在.Net 4框架中创建一个应用程序,但程序集与它不兼容。

以下错误:具有混合模式的程序集是使用运行时版本 v2.0.50727 创建的,并且在运行时版本 4.0 中如果没有额外的配置信息,则无法加载。

在 4 中使用 3.5 程序集

最好的办法可能是在Visual Studio 2010中重新编译.NET 4.0的类库(即打开项目,转换项目并更改目标框架)。

如果不能或不会这样做,则可以尝试将以下内容添加到 .NET 4.0 应用程序的 app.config 文件中:

在 app.config 中添加此配置。

<?xml version="1.0"?>
<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
</configuration>

关键是 useLegacyV2RuntimeActivationPolicy 标志。这会导致 CLR 使用最新版本 (4.0) 加载混合模式程序集。没有这个,它将无法工作。

请注意,这仅适用于混合模式 (C++/CLI) 程序集。可以加载所有托管 CLR 3.5 程序集,而无需在 app.config 中指定此项。