如何使用.Net Core从Elipse服务器检索数据?我是否只能使用.NET Framework来使用DLL?

问题描述 投票:1回答:1

我有一个Elipse E3 Studio(内部版本5.0.434)服务器,带有一堆标签(在x64窗口上运行),我想从.NetCore(3.0)控制台应用程序(同一台机器)中读取内容。问题是Elipse可与COM配合使用(据我所知),. NetCore 无法]本地处理它。必须使用一些互操作性库之类的东西。 .netCore3.0 Release Notes at Windows Native Interop

为了使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):检索具有CLSID {80327130-FFDB-4506-B160-B9F8DB32DFB2}的组件的COM类工厂由于以下错误而失败:80040154类未注册(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上)并得到上述错误。

我有一个Elipse E3 Studio(内部版本5.0.434)服务器,带有一堆标签(在x64窗口上运行),我想从.NetCore(3.0)控制台应用程序(同一台机器)中读取内容。东西是Elipse ...

c# visual-studio dll com .net-4.7.2
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.