【问题标题】:Reference a .NET Core 3.0 library in .NET 4.8?在 .NET 4.8 中引用 .NET Core 3.0 库?
【发布时间】:2019-02-15 01:56:08
【问题描述】:

我一直在尝试遵循一些现有的教程和 stackoverflow 问题/答案,但似乎没有任何效果;

我正在使用 Visual Studio 2019 V16.0.0 Preview 2.2,如果相关的话。

【问题讨论】:

  • “似乎没有任何效果” 不是问题。您的代码的预期和实际行为是什么?
  • @vasily.sib 好吧,我当然想在我的一个 .net 框架项目中引用我所说的库。由于 .NET Core 与 corss 平台兼容,我的目标是在我的 .NET 4.8 项目中使用该库。
  • 好的,当您尝试遵循您提供的此链接之一的建议时会发生什么?
  • 是的,但 .NET Core 的发展速度比 .net 框架快。如果您想从两者中引用库,则库应该是 .NET Standard,而不是 Core,并且 Standard 与您在 Core 中可以做的不匹配
  • .NET Core 和 .NET Framework 是不同的框架;我不会期望这行得通;如果你想要一个两者都可以使用的库,AFAIK 它需要多目标(即具有 .NET Core 和 .NET Framework 目标),或者以 .NET Standard 为目标。或者,涵盖所有基础:多目标包括所有 3(.NET Core、.NET Framework、.NET Standard) - 当您可以利用特定于框架的功能时非常有用,而 .NET Standard 作为最小公分母后备

标签: c# .net-core


【解决方案1】:

正如 Marc Gravell 所述,.NET Core 和 .NET Framework 是不同的框架。他们每个人提供的 Api Surface 都是不同的。描绘它们的表面积的一个好方法是使用维恩图,其中两者的交集就是我们所说的 .NET 标准。如果您使用的库面向 .NET Standard,那么这将保证在 .NET Framework 4.8 和 .NET Core 2.1+ 中都能正常工作。您可以尝试在 .NET Framework 应用程序中使用 .NET Core 3.0 库,但这不能保证有效,因为您可能会很幸运,并且您的 .NET Core 库只需要它们拥有的 API 表面很常见,但很可能它需要仅在 .NET Core 3.0 中受支持的东西,这意味着您将获得针对未找到方法、未找到类型或程序集加载问题的运行时异常。

您拥有 .NET Core 库代码吗?如果是这样,您最好的选择是尝试重新定位到 .NET Standard(以便您将来可以在其他框架中使用该库)或 .NET Framework,这样您就会知道所有 API您的库需要的表面将在运行时出现。

我希望这有助于澄清问题,但如果您需要更多详细信息,请随时回复。

【讨论】:

    猜你喜欢
    • 2020-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-20
    • 2017-04-28
    • 1970-01-01
    相关资源
    最近更新 更多