Можно ли реализовать интерфейс IRtdServer для использования Excel в базовом проекте .Net?
У меня есть существующий каркасный проект .Net 4.6.1, который я хочу обновить до .Net Core 3Я использую Visual Studio 2019 Preview, версия 3.0.100 preview9 .Net Core 3 SDK и C #.
Сердцем этого проекта является класс для связи с Excel с использованием функции RTD Excel:
[Guid("2B70D74D-A4F6-485F-8CDF-4CE514E75183")]
[ProgId("Ameritrade.RTD")]
[ComVisible(true)]
public class RtdQuoteServer : IRtdServer
{
Чтобы создать интерфейс для проекта .Net Framework, я использую следующее:
% SystemRoot% \ Microsoft.Net \ Framework64 \ v4.0.30319 \ RegAsm.exe% ~ dp0 \AmeritradeRtd \ bin \ Debug \ AmeritradeRtd.dll / codebase
Это прекрасно работает для версии .Net Framework.Я перенес приложение в ядро .Net, но не смог заставить его работать.
При запуске RegAsm для dll ядра .Net выдается следующая ошибка:
regasm: error RA0000:не удалось загрузить файл или сборку System.Runtime, версия = 4.2.1.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a 'или одна из ее зависимостей.Системе не удается найти указанный файл.
Я нашел эту статью, указывающую, что создание компонентов COM теперь поддерживается в .Net Core 3.0 - https://docs.microsoft.com/en-us/dotnet/core/native-interop/expose-components-to-com
Я попытался зарегистрировать DLL:
regsvr32 "C: \ Projects \ DEC Decision Capital \ ARTHyperion \ AmeritradeRtdCore \ bin \ Debug \ netcoreapp3.0 \ AmeritradeRtdCore.comhost.dll"
Это дает три разных результата на трех разных ПК:
1) Сообщение об ошибке Regsvr32
2) Ошибка не отображается, но регистрация не работает.
3) Регистрация прошла успешноОднако основная проблема остается, т. е. я не могу заставить Excel связаться с ним.