Suppress tlbimp warnings in visual studio

↘锁芯ラ 提交于 2019-12-07 09:05:40

问题


In a visual studio C# project, it is possible to add references to COM libraries. Visual Studio will then use tlbimp.exe to generate the interop assembly when building the project. The reference looks like this in the .csproj file:

  <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>

However, the 3rdparty type library which I am importing here causes tlbimp to emit some warnings. How do I suppress these warnings in visual studio? I tried to change the wrapper tool to

  <WrapperTool>tlbimp /silent</WrapperTool>

but that causes visual studio to complain with

An error has been encountered that prevents reference 'TDAPIOLELib' from loading. The wrapper tool 'tlbimp /silent' is not a valid wrapper tool.


回答1:


unless the COM library is constantly changing it's COM interfaces you could run the typelib importer once and then refer to the interop assembly in your project from then on. If you have reg free COM all that's needed is that the COM library be copied into your build output folder.




回答2:


I ended up using the BeforeBuild target to explicitly invoke tlbimp.exe:

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

This does require referencing the interop.comlibrary.dll binary, resulting in a little yellow warning sign on the reference in visual studio when opening the project before the first build.



来源:https://stackoverflow.com/questions/916027/suppress-tlbimp-warnings-in-visual-studio

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!