在 Visual Studio 中抑制 tlbimp 警告

Posted

技术标签:

【中文标题】在 Visual Studio 中抑制 tlbimp 警告【英文标题】:Suppress tlbimp warnings in visual studio 【发布时间】:2010-10-29 07:09:06 【问题描述】:

在 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' 不是 有效的包装工具。

【问题讨论】:

【参考方案1】:

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

【讨论】:

我考虑过这一点,但我更喜欢在构建期间生成互操作程序集。这样升级 COM 库就更简单了;无需记录互操作程序集也需要重新创建。【参考方案2】:

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

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

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

【讨论】:

以上是关于在 Visual Studio 中抑制 tlbimp 警告的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Studio 2015 中为自定义代码分析器抑制警告

Visual Studio 2015 不会抑制错误 C4996

在 Visual Studio 2017 for MAC 中抑制命名规则冲突 IDE1006

如何在 Visual Studio 2008 中抑制特定的 CSS 2.0 验证错误?

可以在 Visual Studio 2010 中抑制“无法找到或打开 PDB 文件”警告吗?

如何从 Visual Studio 项目中获取抑制的代码分析警告列表?