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


I have an Elipse E3 Studio (build 5.0.434) server with a bunch of tags (running on a x64 windows) and I want to read then from a .NetCore (3.0) console application (same machine). The thing is Elipse works with COM (as far as I know) and .NetCore can't natively handle it. Gotta use some Interoperability Library or something. .netCore3.0 Release Notes at Windows Native Interop

To make the Elipse server work I used a hardkey so the server was running locally. I have named my tag "A1" and set the value inside Elipse. To make the access I made a C# program using e3DataAccessLib and referenced it on the .csprj. The Program.cs is as follows :

using System;

namespace ElipseNetCore{
    class Program{
        static void Main(string[] args){
                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

The Error I get is the following:

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)).

Other answers point to a x32 on a x64 or vice-versa issue. However I've already tried making sure everything is running on x64. Then I tried everything on x32/x86. Also tried manually registering the .dll with regsvr32 (as show in the commented out line in the first code block and also the E3DATAACESSLib.dll), got and error popup saying "the said dll was loaded but the entry point DllRegisterServer was not located. Verify if the said dll is a DLL or OCX file"

I've been entangled with this problem for a few days now and since I'm new to all this I don't even know if I'm tumbling in the right direction. I would really appreciate any explanation and please excuse my typos.

How do I retrieve data from an Elipse server? Have I missed something?

UPDATE: I have tried that exact same code on Visual Studio running on .Net Framework 4.7.2 and it worked. Also tried (still on Visual Studio) on .NetCore and got the aforementioned error.

asked on Stack Overflow Oct 3, 2019 by Lucas Battistella • edited Oct 17, 2019 by Lucas Battistella

0 Answers

Nobody has answered this question yet.

User contributions licensed under CC BY-SA 3.0