Может ли NuGet распространять COM dll?

Можно ли использовать NuGet для распространения COM DLL?

Как бы я настроить пакет?

Я думаю, что я мог бы поместить DLL в каталог Tools, а затем запустить скрипт после установки, чтобы зарегистрировать библиотеку, но я не очень хорош в PowerShell.

Есть ли в Интернете примеры того, как это сделать (если это возможно)?

1 ответ

Решение

Когда я столкнулся с подобной проблемой, я создал пакет NuGet со следующей структурой.

  • Lib
    • MYCOMLib.dll
  • инструменты
    • mycom.dll
    • install.ps1

MYCOMLib.dll - это библиотека взаимодействия, созданная из mycom.dll с импортером библиотек типов (tlbimp.exe). Это просто делается с помощью команды:

Tlbimp mycom.dll

В install.ps1 содержится следующий код:

param($installPath, $toolsPath, $package, $project)

regsvr32 Join-Path $toolsPath '\mycom.dll' /s

$project.Object.References | Where-Object { $_.Name -eq "MYCOMLib" } |  ForEach-Object { $_.EmbedInteropTypes = $false }

Этот скрипт выполняет то, что он регистрирует COM-библиотеку COM и устанавливает для свойства EmbedInteropTypes в ссылке значение false, что необходимо при использовании.NET 4. См. Тип взаимодействия не может быть встроен для получения дополнительной информации.

Другие вопросы по тегам