实际上,如果您正在使用 .NET Core/Standard 构建应用程序,但在您的应用程序中,您可能有一些使用 .NET Framework 的参考,这一定是个大问题。
一个故事:我正在使用 ASP.NET Core 构建一个 Web 应用程序,在这个应用程序中,我想要一个将 HTML 转换为 pdf 的扩展。
我尝试在 Google 上搜索并找到一个名为:itextsharp 的插件。而问题就出在这里。
itextsharp 使用 .NET Framework,而我的主要项目使用 .NET Core。由于我想创建一个类库来构建这个扩展,我有 3 个选项:
使用 .NET Core 类库。
使用 .NET Standard 类库。
使用 .NET Framwork 类库。
都可以参考主项目。 但是:
我不能在 .NET Core/Standard 类库中使用 itextsharp 引用(itextsharp.dll、itextsharp.xtra.dll、itextsharp.pdfa.dll、itextsharp.xmlworker.dll...)。它们都只能在目标 .NET Framework 上运行。
(由于许可证,我还没有提到如何将代码转换为目标 .NET Standard 或 Core)
我的解决方案是:构建一个 .NET Framework 应用程序并将其发布到 exe 文件,然后作为参考附加到主项目。
P/S:目前,itextsharp 有一个核心版本,但我认为它还不够好(问题:显示图像、带有 unicode 文本的字体、样式标签......)。
总的来说,如果您想构建一些使用目标 .NET X 的应用程序,则必须确保所有引用也可以使用目标 .NET X。
另一个例子:如果你想构建一个使用Razor class library的类库。您必须确保所有引用都使用目标 .NET Core/Standard。因为Razor class library不能引用 .NET Framework 类库。