【问题标题】:Is a .NET Standard DLL binary compatible with a .NET Framework one?.NET Standard DLL 二进制文件是否与 .NET Framework 兼容?
【发布时间】:2018-10-25 03:20:43
【问题描述】:

我目前有一个构建为 .NET Framework 4.6.1 并被各种 .NET Framework 应用程序引用的实用程序库。

我现在想创建一个新的 .NET Core 应用程序,因此我想将实用程序库转换为 .NET Standard 2.0,以便两种类型的应用程序都可以使用它。

如果我只是打开库的源代码,将目标更改为 .NET Standard 2.0 并重新构建它(假设它只使用 .NET Standard 中可用的 API),我是否可以将新程序集放入替换现有的,现有的应用程序是否仍然有效?或者是否需要针对新版本重新构建应用程序?

更普遍的相关问题是,与 .NET Framework 相比,为 .NET Standard DLL 生成的元数据有何不同,它们如何/是否会影响程序集解析器?

(为了抢占评论“为什么不试试看”,我想知道这是否是受支持的场景,而不仅仅是技术上它是否适合我)

【问题讨论】:

  • .NET 程序集的元数据格式在过去 8 年中一直是 v4.0.40319。这不是问题,.netstandard、.netframework 和 .netcore 之间有很大不同的是参考程序集。他们大量使用类型转发将类型从引用程序集映射到运行时程序集。这曾经是可以理解的,但不仅在编译时发生转发,而且在运行时也发生转发。当您只重建一个组件时,很难获得这样的保证。试试吧,不要假设成功。

标签: c# .net .net-standard


【解决方案1】:

.Net Standard 是(但不限于).Net Framework 和 .Net Core

之间的兼容交叉部分>

这样想

或者,比较标准的宣传图片之一

.Net Framework 中有很多东西在 .Net Core 中没有多大意义。例如 Windows 特定的东西。

但是,您可以使用The .NET Portability Analyzer 解决任何明显的兼容性问题

想让您的图书馆跨平台吗?想看看有多少工作 需要使您的应用程序与其他 .NET 兼容 实现和配置文件,包括 .NET Core、.NET Standard、UWP、 和适用于 iOS、Android 和 Mac 的 Xamarin? .NET 可移植性分析器 是一种工具,可为您提供有关灵活程度的详细报告 通过分析程序集,您的程序是跨 .NET 实现的。 可移植性分析器作为 Visual Studio 扩展提供,并且 作为控制台应用程序。

这是(工具)的另一张图片,因为它使我的帖子看起来很详细

回答您的问题

如果我只是打开库的源代码,请将目标更改为 .NET Standard 2.0 并重建它,我可以将新程序集放入 替换现有的,如果现有的应用程序仍然存在 工作?或者是否需要针对新的应用程序重新构建应用程序? 版本?

据我所知需要重建,试试看会发生什么,然后告诉我们。

有很多事情可能使这不起作用。

更普遍的相关问题是,在 与 .NET 相比,为 .NET 标准 DLL 生成的元数据 框架一,它们如何/是否会影响程序集解析器?

不完全确定您的意思,但是在重建时它会解决相同的问题。

(抢先评论“为什么不试试看”,我想知道 如果这是一个受支持的场景,而不仅仅是技术上是否可能 为我工作)

据我所知或可以研究,不支持仅更换组件。但是,也许其他人在这里有更多信息。

【讨论】:

  • 这都是真的,但它没有回答问题
  • @gallivantor 我抢先了,等我更新一下
  • 虽然没有具体回答问题,但已经提供了可用于检查兼容性的工具。它比具体的答案更有用。
  • 谢谢,您在任何官方 MS 文档中是否有这些答案的参考?
  • @gallivantor 在过去的 30 分钟里,我在所有我能找到的地方进行了搜索,看看这是否真的得到官方支持,无处可说,但无处可说。我知道即使在重新编译和 msBuild 时,您也必须拥有正确的版本,否则它不会在最好的日子里工作,而且还有各种各样的步骤来完成这项工作。我知道标准库也将具有 .net 标准依赖项,并且如果它依赖于库中的任何 3rd 方库,则绑定在主机应用程序的很多情况下都不起作用。我只能说试试看
猜你喜欢
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 2021-11-16
  • 2021-07-20
  • 1970-01-01
相关资源
最近更新 更多