在 .Net Core 3 中引用 .NET Framework DLL

3

我有一个由供应商提供的.NET Framework库(CyberSource支付处理器 - https://github.com/CyberSource/cybersource-sdk-dotnet)。

这个API被一个ASP.NET Core 3.0应用程序引用。

一切都编译正常,但是当我尝试调用.NET Framework库中的一个方法时,我得到以下异常:

{"Method not found: 'Void System.ServiceModel.EndpointAddress..ctor(System.Uri, System.ServiceModel.EndpointIdentity, System.ServiceModel.Channels.AddressHeaderCollection)'."}

我确定了以下几点:

  • 供应商没有提供符合.NET Core或.NET Standard的库
  • 库源代码不能直接移植到.NET Standard或.NET Core

有没有合理的方法使这个工作起来?

1个回答

2
您可以使用.NET可移植性分析器来分析DLL。如果DLL使用的所有类和方法都在.NET Standard/.NET Core中可用,则CLR将能够调用这些方法。但是,一些API尚未移植,这可能是您面临的问题。如果是这种情况,您可以分叉并重写代码以使用在.NET Core 3中可用的API。

Asp.Net 3 需要 Core 3.0 - 它与 net48 不兼容。 - user1142433
啊,我没注意到你使用的是asp.net core 3。在这种情况下,你可以考虑降级到asp.net core 2.1,它是LTS版本,并且支持到2021-08-21 https://dotnet.microsoft.com/download/dotnet-core。 - Andrii Litvinov
你是指一种 .net dll 代理或者 asp.net core 2.1 代理吗?还有一种选择是构建一个专门的 asp.net core 2.1 api 服务来与cybersource和所有其他api服务一起使用,可以使用更新的asp.net core版本。 - Andrii Litvinov
2
是的,我指的是一个API服务代理。可能会在.NET Framework 4.x中构建它。 :-/ - user1142433
1
@user1142433,很想听听你在这方面的进展,因为我目前也遇到了类似的问题。如果你成功解决了问题,那么将其作为自我回答也是对这个问题的很好补充。 - Ian Kemp
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接