Может ли 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. См. Тип взаимодействия не может быть встроен для получения дополнительной информации.