Компиляция интерфейса IRtdServer для функции Excel RTD () в .Net Core - PullRequest
1 голос
/ 19 сентября 2019

Можно ли реализовать интерфейс 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 связаться с ним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...