我们正在改变项目中的一些项目,我偶然发现了集成问题。
有一些第三。在常规ClassLibrary(.NET 4.0)上编写的派对DLL,我们的项目现在在.NET Standard + AspNet Core上。我们必须更新整个基础设施,同时保持一切正常。
App_1
调用SomeFramework
,然后调用SomeExternal
App_2
也会调用SomeFramework
,然后调用SomeExternal
。
这样做是为了防止直接调用SomeExternal
。这是项目中无法更改的要求。
如何将SomeExternal
引用到SomeFramework
?
我尝试过直接汇编链接(添加引用> Assemblies>搜索),但SomeExternal
无法加载。
我将整个项目设置为x64或x86(而不是AnyCPU),但没有任何改变。
我们正在使用VS2017 15.5.5,.NET 4.7.1和.NET Core SDK 2.1.4。
答案 0 :(得分:2)
.NET Core完全支持.NET Standard 2.0,它本身具有足够广泛的API占用空间,Microsoft已为.NET Framework库添加了本机支持。换句话说,如果您运行的是.NET Core 2.0+,则可以添加对所需的任何.NET Framework库的引用。
但是,您会收到警告。但是,警告只是告诉您,当您可能能够充分利用该库时,它可能会使用不受支持的API。您可以测试并验证一切正常,然后如果您愿意,可以安全地禁止警告。大多数情况下,此时不受支持的API会解决特定于Windows的功能。由于.NET Core和.NET Standard是跨平台的,因此仅适用于Windows的API不会成为两者的API足迹。然而,即便如此,还有Microsoft.Windows.Compatibility
NuGet扩展了.NET Standard以支持一些缺少的API。但是,此NuGet仅用于将应用程序迁移到.NET Standard / .NET Core,而不是作为长期解决方案。目标应该仍然是从这些不受支持的API转移到实际支持和跨平台的API。
您还应该使用API Analyzer,它将在旧代码和新代码中调用已弃用和不支持的API。这样,当你正在工作时,你可以看到仍然需要移植的东西,如果你又回到使用你不应该使用的东西,就会被提醒。