【问题标题】:Suppress tlbimp warnings in visual studio在 Visual Studio 中抑制 tlbimp 警告
【发布时间】: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' 不是 有效的包装工具。

【问题讨论】:

    标签: .net visual-studio visual-studio-2008 msbuild tlbimp


    【解决方案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 中的引用上会出现一个黄色的小警告标志。

    【讨论】:

      猜你喜欢
      • 2017-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-16
      • 1970-01-01
      • 2016-12-23
      • 2011-04-06
      相关资源
      最近更新 更多