Сделать сборку COM-Visible breaks build для Excel VSTO addin - PullRequest
1 голос
/ 22 января 2020

Я работаю над C# VSTO Excel Addin, который будет вызываться из какого-то Excel VBA. Поэтому я должен:

  • Зарегистрироваться для COM-взаимодействия и
  • Сделать сборку COM-Visible

Регистр ничего не нарушает, но делает сборку COM visible вызывает следующие две ошибки:

Error       The assembly "C:\Users\...\ExcelInterop.dll" could not be converted to a type library. Type library exporter encountered an error while processing 'ExcelInterop.ThisAddIn, ExcelInterop'. Error: Error loading type library/DLL.   ExcelInterop            
Error       The assembly 'Microsoft.Office.Tools.Common.v4.0.Utilities, Version=10.0.0.0, Culture=neutral, PublicKeyToken=...' is not registered for COM Interop. Please register it with regasm.exe /tlb.  ExcelInterop            

Он отлично работает, если я создаю обычный проект библиотеки классов, поэтому я предполагаю, что это связано с ThisAddin.cs, который связывает C# чтобы превзойти рабочие листы. Обратите внимание, что я не изменил ThisAddin.cs вообще из шаблона, который создается.

Что я пытаюсь сделать?

С мой VSTO Excel надстройка, я должен импортировать / экспортировать некоторые данные Excel и отправить их в бизнес-API (который не может быть доступен из надстройки VBA Excel). Тем не менее, VBA предоставляет пользовательский интерфейс для клиента (среди прочего), поэтому я не могу просто переписать весь надстройку VBA в C#.

1 Ответ

2 голосов
/ 22 января 2020

Чтение следующего SO-сообщения помогло мне лучше понять, что означает COM-Visible ...

Мне просто нужно было отметить класс, который мне нужен для использования в VBA, как видно ниже, вместо создания всей сборки COM-Visible:

[GuidAttribute("54c23560-db8d-4ec9-a19f-f920ba0558c0"), ComVisible(true)]
public class Manager
{
...
}

Я сгенерировал Guid из https://www.guidgenerator.com/online-guid-generator.aspx.

...