当前位置: 首页 > 知识库问答 >
问题:

我可以从.NET6项目中添加对.NETFramework DLL的引用吗?

养慈
2023-03-14

微软最近宣布。Net 6.0作为主要版本。我没有找到任何可以使用older的参考资料。NET框架(

比如说,一个。NET 6项目将有dll引用。NET Framework 4.7.1 for windows应用程序

共有3个答案

楚乐逸
2023-03-14

“针对”(针对/针对编译)的程序集。NET Framework (1.0-4.8)可能会使用中不存在的API(类型、方法)。NET标准或。网芯。

因此,如果您有一个以. NET Standard或. NET Core为目标的项目,并且您想添加对以. NET Framework为目标的程序集的引用,则程序集可能会在运行时引发异常,因为它缺少方法重载或类型。这些类型存在于Framework DLL中,但不存在于. NET Core运行时程序集中。

现在,如果你知道(通过解释代码或测试,最好两者都知道)面向框架的程序集不使用。NET标准或。网芯,你很好(对于区别,看有什么区别。网芯和。NET标准类库项目类型?).

如果程序集放在源代码管理中的文件夹中,则可以添加程序集引用:

<Reference Include="../lib/path/To/Dll.dll" />

如果它是 NuGet 打包的依赖项,则可以安装它并重写警告:

<PackageReference Include="Some.Framework.Package" Version="1.0.0" NoWarn="NU1701" />

将程序集重新编译为目标。NET Standard 2.0,并通过NuGet打包和分发。

阎烨
2023-03-14

这是一个答案复杂的问题。

让我直言不讳。很有可能你的问题的答案是不,这不可能,但那是因为你心里有一个非常具体的库。真正的答案是,这取决于有问题的库,但大多数情况下这是行不通的。

是的,您可以将 .NET Framework 程序集加载到 .NET Core 5 和 6 中。

然而,取决于这个库做什么,可能更重要的是,它有什么依赖关系,也就是它想拖着它的其他库,它可能无法为任何相当大的复杂库正常工作。

有些类在.NET5中不存在,甚至只有一个方法重载或属性。根据您访问的.NETFramework的确切部分,它实际上可能在.NET5中完全缺失。

这里有更多信息。

您最好的选择可能是尝试:

  • 重新编译特定.NET版本的库(可以是5或6)
  • 重新编译针对.NET标准2.1的库,因为.NET 5与之兼容

然而,实际上,重新编译可能会遇到完全相同的问题,因为您将不得不处理这些更改的位。但是,这样至少您会对什么可行和不可行有更多的了解,并且您有机会修复它。

如果您的库不需要更改,请将其替换,或者尝试并期待最好的结果。

虞承泽
2023-03-14

一般来说,不,你不能。它们并不是真正为兼容而设计的。.NET Core 以及随后的 .NET 5 和 6 基于对 .NET 的完全重写。

使用. NET Framework兼容性模式可能会有一些工作机会,但还远不能保证。

如果您希望您的库在.NET framework和.NET Core/6之间具有可靠的跨框架兼容性,您可以尝试将您的库定位于.NET标准

 类似资料:
  • 问题内容: 问题答案: 您可以通过以下方式之一: 在依赖项中,您可以将其他项目添加到您的项目中。右键单击项目->属性-> Java构建路径->项目。在此处添加您的项目。 要么 将项目类放入jar,并将其添加到其他项目中 依赖关系应添加到类路径中 在运行时,请确保在两种情况下,都将引用项目的JAR文件添加到类路径中。

  • 问题内容: 我有一个JavaScript对象,如下所示: 如果我想在此列表中添加/删除项目,我将如何使用jQuery进行处理?客户希望该列表是可动态修改的。 问题答案: 首先,您引用的代码 不是 JSON。您的代码是JavaScript对象文字表示法。JSON是为简化解析而设计的子集。 您的代码定义的对象(包含数组()对象)(每个都具有,和)。 您不需要或不需要jQuery,而只需JavaScri

  • Twitter的引导使用Glyphicons的图标。默认情况下,它们是“”: 是否可以使用一些CSS技巧来更改图标的颜色?我希望其他css3的亮点能够避免为每种颜色设置图标图像。 我知道你可以改变封闭的背景颜色(

  • 问题内容: 如果我有这个: 如果可能的话,如何在不实际调用方法的情况下获得对f.bar的引用? 编辑添加:我想做的是编写一个对f的成员进行迭代并对其执行某些操作的函数(不重要)。属性让我感到震惊,因为仅在getattr()中命名它们会调用其__get __()方法。 问题答案: (下图)在给定对象的中查找,如果存在则返回关联的值。如果不是其中的关键,则搜索对象的MRO 。如果找不到密钥,则引发。

  • 问题内容: 我有兴趣将GitHub上的项目用作我项目中的依赖项。GitHub项目有一个文件。我可以修改我的文件以使用该项目吗?如果是这样,怎么办?如果没有,我的最佳做法是什么? 问题答案: AFAIK,我的意思不是这样。 您可以将github用作Maven存储库-这与直接引用项目不同,它具有pom文件意味着仅是Maven项目。 如果 项目在中央存储库或其他存储库中不可用,则最好的选择是克隆,构建并