【问题标题】:Use Omron libraries in .NET Core 2.0在 .NET Core 2.0 中使用 Omron 库
【发布时间】:2018-05-14 13:07:22
【问题描述】:

我正在尝试在 ASP.NET Core 2.0 应用程序中使用 Omron 库(即 Compolet)。我为这些类添加了程序集参考,但在运行时它们会尝试定位 System.Windows.Forms 程序集 - 显然在 ASP.NET Core 中不可用。

确切的错误是:

FileNotFoundException:无法加载文件或程序集“System.Windows.Forms,版本=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e096”。欧姆龙.Compolet.CIP.CIPPIcCompolet..ctor()

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

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

我尝试添加对“System.Windows.Forms.dll”的引用,但它说:

BadImageFormatException:无法加载文件或程序集“System.Windows.Forms,版本=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”。不应加载引用程序集以供执行。它们只能在 Reflection-only loader 上下文中加载。 (HRESULT 异常:0x80131058)

我也尝试使用仅反射方式,但再次表示此框架不支持此模式。

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

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

【问题讨论】:

  • 顺便说一句,NJCompolet nj = = new NJCompolet() 肯定是错字吗?
  • 是的,已更新。谢谢。

标签: c# asp.net .net libraries


【解决方案1】:

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

【讨论】:

  • 据我了解,这不仅仅是运行时的问题......框架完全不同,我必须更改很多代码,不是吗?
  • 根据对象和代码风格,是的,您最终可能会更改很多代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-28
  • 1970-01-01
  • 2018-11-17
  • 2018-09-16
  • 1970-01-01
  • 2018-06-30
  • 2018-09-14
相关资源
最近更新 更多