我们通过 COM (CCW) 在 native C++ 中使用我们的 .NET 程序集 DLL。
每当我制作新版本的 DLL 时,我必须将两个文件(.dll 和相应的 .tlb)发送给在他们的代码中使用它的工作人员。

是否可以将 .tlb 文件作为资源嵌入 .NET DLL 文件中?

最佳答案

使用 Visual Studio .NET 做到这一点并不十分简单,但可以做到。在基本层面上,你必须做的是:

  • 生成您的 TLB 文件,例如“YourLibrary.tlb”。
  • 使用文本编辑器(如记事本,或 Visual Studio 中的 File/New/File.../Text File)创建一个名为“YourLibrary.rc”的 Win32 资源脚本文件。
  • 在脚本文件中,逐字输入以下文本(但当然要替换您的实际 TLB 文件名):

    1 类型库“YourLibrary.tlb”
  • 将脚本文件保存到TLB文件所在的文件夹中。
  • 从 Visual Studio 命令提示符切换到包含脚本文件的文件夹并使用以下命令编译它:

    rc 你的图书馆.rc

    这将在名为“YourLibrary.res”的同一文件夹中生成一个 Win32 资源文件。
  • 在 Visual Studio 中,右键单击解决方案资源管理器中的项目节点(例如,“YourLibrary”)并选择属性。
  • 在“应用程序”选项卡上的“资源”下,选择“资源文件”选项并浏览到步骤 5 中的“YourLibrary.res”文件。
  • 保存并重建项目。

  • TLB 现在将作为资源嵌入 DLL 中,以便其他 COM 应用程序可以读取它。

    如果稍后重新生成 TLB 文件,则需要重复步骤 5 重新编译资源文件,并重复步骤 8 将新版本嵌入 DLL 中。

    综上所述,您可以使用 Build Events 或通过将自定义 MSBuild 目标放入您的项目文件中来自动执行其中的一些操作,但这是另一回事。

    关于c# - 如何将 .tlb 作为资源文件嵌入到 .NET Assembly DLL 中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/417803/

    10-14 15:38
    查看更多