visual-studio - NuGet可以分发COM dll吗?

标签 visual-studio com nuget

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

我将如何设置包装?

我在想可以将DLL放在Tools目录中,然后运行安装后脚本来注册该库,但是我对PowerShell的掌握不是很好。

是否有在线示例,说明如何做到这一点(如果可能)?

最佳答案

当我遇到类似的问题时,我使用以下结构创建了一个NuGet包。

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

  • 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 4时是必需的。有关更多信息,请参见Interop type cannot be embedded

    关于visual-studio - NuGet可以分发COM dll吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6037222/

    相关文章:

    c++ - 复杂的 C++ 数据类型和 COM

    c# - 使用 COM UPnP 库注册设备/服务

    .net-core - NU1100 : Unable to resolve 'System.Reflection.TypeExtensions (>= 4.5.1)' for '.NETStandard,Version=v1.3'

    c# - 在 NuGet 中包含控制台应用程序的最佳实践

    c# - Nuget 项目依赖 hell

    c++ - Windows 上的 Unicode 基础知识

    xml - .csproj 中文件的排序顺序

    c++ - 什么是抑制 MS 警告的最佳解决方案包括(mmsystem.h 中的 C4201)

    internet-explorer - IE COM 的 querySelectorAll 在 IE 8 中不起作用

    visual-studio - 我可以在Visual Studio项目模板中创建 "Solution"级别的项目吗?