Не удается зарегистрировать библиотеку COM в. NET Core - PullRequest
0 голосов
/ 02 марта 2020

Я работаю с некоторыми библиотеками COM, которые позволяют мне подключаться к IBM PCOMM API . Я пытаюсь получить список соединений от объекта с именем AutConnList(). Код выглядит следующим образом:

using AutConnListTypeLibrary;
using AutOIATypeLibrary;
using AutPSTypeLibrary;

public static List<string> GetSessions()
{
    var sessions = new List<string>();

    AutConnList connectionList = new AutConnList();
    connectionList.Refresh();

    for (int i = 1; i <= connectionList.Count; i++)
    {
        IAutConnInfo sessionInfo = (IAutConnInfo)connectionList[i];
        sessions.Add(sessionInfo.Name);
    }

    return sessions;
}

Я компилирую код для обоих. NET Framework (4.6) и. NET Core (3.0), так как он предназначен в качестве библиотеки, используемой многими различными программами , Мультикомпиляция выполняется путем добавления следующей строки в файл .csproj:

<TargetFrameworks>netcoreapp3.0;net46</TargetFrameworks>

Метод работает, как предполагалось, при использовании из приложений. NET Framework, но когда я пытаюсь использовать его из . NET Core, я получаю следующее исключение:

Получение фабрики классов COM для компонента с CLSID {9DF30780-6F18-11D0-910D-0004AC3617E1} не удалось из-за следующей ошибки: 80040154 Класс не зарегистрирован (0x80040154 (REGDB_E_CLASSNOTREG)).

Я пробовал решения из разных сообщений о похожих проблемах (например, this ), но без удачи. Кроме того, я не нашел других сообщений, где проблема возникает только в определенных c framework.

Я не знаю, связано ли это с различиями в ссылочных сборках, но с кодом ошибки на самом деле не предлагает это?

enter image description here

Кто-нибудь сталкивался с подобными проблемами, и если да, то как вы решили это?

...