Я работаю с некоторыми библиотеками 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.
Я не знаю, связано ли это с различиями в ссылочных сборках, но с кодом ошибки на самом деле не предлагает это?
Кто-нибудь сталкивался с подобными проблемами, и если да, то как вы решили это?