13

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

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

4

1 回答 1

11

使用 Visual Studio .NET 做到这一点并不简单,但可以做到。在基本层面上,您需要做的是:

  1. 生成您的 TLB 文件,例如“YourLibrary.tlb”。

  2. 使用文本编辑器(如记事本,或 Visual Studio 中的 File/New/File.../Text File)创建名为“YourLibrary.rc”的 Win32 资源脚本文件。

  3. 在脚本文件中,逐字输入以下文本(当然要替换为您的实际 TLB 文件名):

    1 个类型库“YourLibrary.tlb”

  4. 将脚本文件保存到与 TLB 文件相同的文件夹中。

  5. 在 Visual Studio 命令提示符中,切换到包含脚本文件的文件夹并使用以下命令对其进行编译:

    rc YourLibrary.rc

    这将在名为“YourLibrary.res”的同一文件夹中生成一个 Win32 资源文件。

  6. 在 Visual Studio 中,右键单击解决方案资源管理器中的项目节点(例如“YourLibrary”)并选择属性。

  7. 在“应用程序”选项卡上的“资源”下,选择“资源文件”选项并从第 5 步浏览到“YourLibrary.res”文件。

  8. 保存并重建项目。

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

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

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

于 2009-01-07T02:11:45.150 回答