繁体   English   中英

如何使用.Net Core 从 Elipse 服务器检索数据? 我是否受限于 .NET 框架以使用 DLL?

[英]How to retrieve data from Elipse server with .Net Core? Am I restrained to .NET Framework for using a DLL?

我有一个带有一堆标签的 Elipse E3 Studio(构建 5.0.434)服务器(在 x64 窗口上运行),然后我想从.NetCore(3.0)控制台应用程序(同一台机器)中读取。 问题是 Elipse 可与 COM (据我所知)一起使用,而.NetCore 本身无法处理它。 必须使用一些互操作性库或其他东西。 Windows Native Interop 上的 .netCore3.0 发行说明

为了使 Elipse 服务器正常工作,我使用了硬键,因此服务器在本地运行。 我已将标签命名为“A1”并在 Elipse 中设置值。 为了进行访问,我使用 e3DataAccessLib 制作了一个 C# 程序,并在.csprj 上引用了它。 Program.cs 如下:

using System;
using E3DATAACCESSLib; 


namespace ElipseNetCore{
    class Program{
        static void Main(string[] args){
            try{
                E3DataAccessManager e3DA = new E3DataAccessManager();
                e3DA.Server = "localhost"; //kinda pointless but still
                object Value = new object();
                object Timestamp = new object();
                object Quality = new object();
                e3DA.ReadValue("A1.Value", ref Timestamp, ref Quality, ref Value); //ReadValue is a Elipse Server method that takes in a "tag" and place the result in the ref's
                Console.WriteLine($"Value:  {Value}, Timestamp: {Timestamp} and Quality: {Quality}");
            }//end try
            catch(Exception ex){
                Console.WriteLine("the mother funking error now is :" +ex.ToString());
//regsvr32 C:\Users\lucas.battistella\Documents\Desenvolvimento\ElipseNetCore\ElipseNetCore\obj\Release\netcoreapp2.2\win-x64\ElipseNetCore.dll
            }//end catch try
        }//end Main
    }//end Program
}//end namespace

我得到的错误如下:

System.Runtime.InteropServices.COMException (0x80040154): Retrieving the COM class factory for component with CLSID {80327130-FFDB-4506-B160-B9F8DB32DFB2} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG ))。

其他答案指向 x64 上的 x32,反之亦然。 但是我已经尝试过确保一切都在 x64 上运行。 然后我在 x32/x86 上尝试了一切。 还尝试使用 regsvr32 手动注册.dll(如第一个代码块中的注释行以及 E3DATAACESSLib.dll 中所示),得到并弹出错误消息“所述 dll 已加载,但未找到入口点 DllRegisterServer。验证上述 dll 是 DLL 还是 OCX 文件”

我已经纠结这个问题好几天了,因为我对这一切都很陌生,所以我什至不知道我是否朝着正确的方向翻滚。 我真的很感激任何解释,请原谅我的错别字。

如何从 Elipse 服务器检索数据? 我错过了什么吗?

更新:我已经在.Net Framework 4.7.2 上运行的 Visual Studio 上尝试了完全相同的代码并且它有效。 还在.NetCore 上尝试过(仍在 Visual Studio 上)并得到上述错误。

解决方法:忘记 NetCore 并迁移到 NetFramework 4.8。 忘记 VSCode,继续使用 VS。 每当我回顾这个问题时,它都会引起我的兴趣。 E3DATAACCESSLib 是针对 x32 和 NetFramework 构建的(这意味着 Windows 必然)。 奇怪的是它在我的机器上运行,目标是 x86(VS 和 NetFramework 4.8),但不在 VSCode 和 NetCore 上。 我阅读了有关为 NetFramework 在 Core 上工作(或不工作)构建的库的冲突信息。 今天我尝试在另一台机器(虚拟机和远程)上运行构建的工作代码,它向我显示了完全相同的错误消息。 我通过安装 E3 程序并重新启动机器来修复它,就这么简单。 如果那敲响了你的钟声,请分享光。

暂无
暂无

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

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