如何在构建服务器上构建依赖于第三方 COM 库的项目?
How to build a project that relies on a third party COM library on a build server?
我正在开发一个项目,该项目使用第三方 COM 库作为参考,我想在 Visual Studio Team Services 构建客户端上构建该项目。我的第一个想法是创建一个 MSBuild 任务来检查本地计算机上是否安装了 COM 库,如果没有,则继续安装它,但这似乎是一种非常混乱的方法。我四处搜索,但似乎所有答案都可以追溯到几年前,而且我似乎无法让我找到的少数答案在 VS 2013 项目中发挥作用。其他人是如何解决这个问题的?有更清洁的方法吗?
作为参考,我也试过this solution,看起来很干净,但没有用。
我会走以下路线之一:
- 使用
tlbimp
生成互操作dll,将其添加到您的项目中并直接引用它:
- 在VS命令提示符下,执行
tlbimp.exe <your_dll>
生成interop dll。您可以使用 /out
选项指定名称。
- 将此 dll 与您的代码放在一起
- 通过转至
Add reference > Browse
并单击 Browse...
添加 dll 来引用它
- 从 COM dll 生成 tlb,将其添加到项目并引用 tlb:
- 生成 tlb(例如使用
OLE/COM Object viewer
) or extract it from the dll resources、
- 将此 tlb 与您的代码放在一起
- 通过转至
Add reference > COM
并单击 Browse...
将 tlb 引用添加到项目 来引用它
- 正如@HansPassant 在评论中指出的那样,此解决方案仍然依赖于注册表,但您可以使用
regtlb
、regtlib
或类似工具将其注册为预构建步骤,这应该比安装服务器(尽管如果它只是一个 dll,您可以使用 regsvr32
来注册它而不是完全安装)。但是,这仍然比使用 interop dll 的方法更复杂
我正在开发一个项目,该项目使用第三方 COM 库作为参考,我想在 Visual Studio Team Services 构建客户端上构建该项目。我的第一个想法是创建一个 MSBuild 任务来检查本地计算机上是否安装了 COM 库,如果没有,则继续安装它,但这似乎是一种非常混乱的方法。我四处搜索,但似乎所有答案都可以追溯到几年前,而且我似乎无法让我找到的少数答案在 VS 2013 项目中发挥作用。其他人是如何解决这个问题的?有更清洁的方法吗?
作为参考,我也试过this solution,看起来很干净,但没有用。
我会走以下路线之一:
- 使用
tlbimp
生成互操作dll,将其添加到您的项目中并直接引用它:- 在VS命令提示符下,执行
tlbimp.exe <your_dll>
生成interop dll。您可以使用/out
选项指定名称。 - 将此 dll 与您的代码放在一起
- 通过转至
Add reference > Browse
并单击Browse...
添加 dll 来引用它
- 在VS命令提示符下,执行
- 从 COM dll 生成 tlb,将其添加到项目并引用 tlb:
- 生成 tlb(例如使用
OLE/COM Object viewer
) or extract it from the dll resources、 - 将此 tlb 与您的代码放在一起
- 通过转至
Add reference > COM
并单击Browse...
将 tlb 引用添加到项目 来引用它
- 正如@HansPassant 在评论中指出的那样,此解决方案仍然依赖于注册表,但您可以使用
regtlb
、regtlib
或类似工具将其注册为预构建步骤,这应该比安装服务器(尽管如果它只是一个 dll,您可以使用regsvr32
来注册它而不是完全安装)。但是,这仍然比使用 interop dll 的方法更复杂
- 生成 tlb(例如使用