2009-05-27 193 views
3

在Visual Studio C#项目中,可以添加对COM库的引用。然后,Visual Studio将在构建项目时使用tlbimp.exe生成互操作程序集。参考看起来像这样在.csproj的文件:在Visual Studio中抑制tlbimp警告

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

回答

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在第一次构建之前打开项目。

4

除非COM库经常更改它的COM接口,否则您可以运行一次typelib导入器,然后从项目中引用项目中的interop程序集。如果你有免费的COM,所有需要的就是将COM库复制到你的构建输出文件夹中。

+0

我考虑过这个,但我更喜欢在构建过程中生成互操作程序集。升级COM库就更简单了;不需要记录互操作程序集也需要重新创建。 – 2009-08-22 12:14:50