NuGet可以分发COM DLL吗?

Jim*_*nts 17 com visual-studio nuget

是否可以使用NuGet来分发COM DLL?

我该如何设置包装?

我想我可以将DLL放在Tools目录中,然后运行安装后脚本来注册库,但我不是很擅长PowerShell.

是否有任何在线示例如何执行此操作(如果可能)?

小智 39

当我遇到类似的问题时,我创建了一个具有以下结构的NuGet包.

  • LIB
    • MYCOMLib.dll
  • 工具
    • mycom.dll
    • install.ps1

MYCOMLib.dll是mycom.dll与类型库导入程序(tlbimp.exe)生成的互操作DLL .这只需使用以下命令完成:

Tlbimp mycom.dll
Run Code Online (Sandbox Code Playgroud)

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 }
Run Code Online (Sandbox Code Playgroud)

这个脚本的作用是注册COM dll并将引用上的EmbedInteropTypes属性设置为false,这在使用.NET 4时是必需的.有关更多信息,请参阅Interop类型.