在 .NET Core 2.0 中使用 Omron 库

Use Omron libraries in .NET Core 2.0

我正在尝试在 ASP.NET Core 2.0 应用程序中使用 Omron 库(即 Compolet)。我为那些 类 添加了程序集引用,但在 运行 时他们试图找到 System.Windows.Forms 程序集 - 显然在 ASP.NET Core.

中不可用

准确的错误是:

FileNotFoundException: Could not load file or assembly 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e096'. OMRON.Compolet.CIP.CIPPIcCompolet..ctor()

我猜“..ctor()”是"constructor"。事实上,当我尝试创建一个新对象时会发生这种情况:

NJCompolet nj = new NJCompolet()
{
    LocalPort = 2,
    PeerAddress = "192.168.2.10",
};

我试图添加对 "System.Windows.Forms.dll" 的引用,但它说:

BadImageFormatException: Could not load file or assembly 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058)

我也尝试过使用 Reflection-only 方式,但再次表明此框架不支持此模式。

我知道我可以创建一个单独的 Windows.Forms 项目来实例化库,但是我必须设置一个 IPC 通道来与我的主 ASP 项目交换数据。我正在努力避免这种情况 - 如果可能的话。

还有什么我应该尝试的吗?

您的问题是您正在尝试将 .NET 2.0 Framework DLL 添加到 .NET Core 2.0 项目。这些 DLL 利用两个不同的 运行 时间环境,这意味着它们彼此不兼容。您需要将 Web 应用程序切换到支持加载 2.0 Framework DLL 的不同 运行 时间,例如 ASP.NET 3.5 Framework 项目。