在 .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 项目。
我正在尝试在 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 项目。