4

在 Visual Studio C# 项目中,可以添加对 COM 库的引用。然后, Visual Studio 将在构建项目时使用tlbimp.exe生成互操作程序集。.csproj 文件中的引用如下所示:

  <ItemGroup>
    <COMReference Include="TDAPIOLELib">
      <Guid>{F645BD06-E1B4-4E6A-82FB-E97D027FD456}</Guid>
      <VersionMajor>1</VersionMajor>
      <VersionMinor>0</VersionMinor>
      <Lcid>0</Lcid>
      <WrapperTool>tlbimp</WrapperTool>
      <Isolated>False</Isolated>
    </COMReference>
  </ItemGroup>

但是,我在此处导入的 3rdparty 类型库会导致 tlbimp 发出一些警告。如何在 Visual Studio 中抑制这些警告?我试图将包装工具更改为

  <WrapperTool>tlbimp /silent</WrapperTool>

但这导致视觉工作室抱怨

遇到一个错误,阻止加载引用“TDAPIOLELib”。包装工具“tlbimp /silent”不是有效的包装工具。

4

2 回答 2

4

除非 COM 库不断更改它的 COM 接口,否则您可以运行 typelib 导入器一次,然后从那时起在您的项目中引用互操作程序集。如果您有 reg free COM,则只需将 COM 库复制到您的构建输出文件夹中。

于 2009-08-22T03:17:22.980 回答
3

我最终使用 BeforeBuild 目标显式调用 tlbimp.exe:

  <Target Name="BeforeBuild">
     <Exec Command="tlbimp /silent ..\3rdparty\comlibrary.dll /out:..\bin\interop.comlibrary.dll" />
  </Target>

这确实需要引用 interop.comlibrary.dll 二进制文件,在第一次构建之前打开项目时,Visual Studio 中的引用上会出现一个黄色的小警告标志。

于 2009-05-27T15:06:24.560 回答