是否可以使用NuGet分发COM DLL?
我如何设置包裹?
我在想我可以将DLL放在Tools目录中,然后运行安装后脚本来注册库,但我不擅长PowerShell。
是否有任何在线示例(如果可能的话)?
答案 0 :(得分:38)
当我遇到类似的问题时,我创建了一个具有以下结构的NuGet包。
MYCOMLib.dll是mycom.dll与Type Library Importer(tlbimp.exe)生成的互操作DLL。 这只需使用以下命令完成:
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 dll并将引用上的EmbedInteropTypes属性设置为false,这在使用.NET时是必需的。有关详细信息,请参阅Interop type cannot be embedded。