繁体   English   中英

在.NET Core中从常规ClassLibrary调用方法?

[英]Call method from regular ClassLibrary within .NET Core?

背景

我们正在更改项目中的一些项目,但偶然发现了集成问题。

有一些第三。 使用常规ClassLibrary(.NET 4.0)编写的第三方DLL,而我们的项目现在位于.NET Standard + AspNet Core。 我们必须更新整个基础架构,同时保持所有功能正常运行。

结构体

  • SomeExternal.dll(用.NET 4.0编写的第三方代码)
  • SomeFramework.dll(NETStandard 2)
  • App_1(.NET 4.7.1)
  • App_2(AspNet核心)

App_1调用SomeFramework ,然后调用SomeExternal
App_2还调用SomeFramework ,然后再调用SomeExternal

这样做是为了防止直接调用SomeExternal 这是项目中不可更改的要求。

问题

我怎么可以参考SomeExternalSomeFramework
我尝试了直接程序集链接(添加引用>程序集>搜索),但是SomeExternal无法加载。

我将整个项目设置为x64或x86(而不是AnyCPU),但没有任何更改。

我们正在使用VS2017 15.5.5,.NET 4.7.1和.NET Core SDK 2.1.4。

.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的用法。 这样,在工作时,您会看到仍然需要移植的内容,如果您恢复使用不该使用的内容,则会被提醒。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM