【问题标题】:Preventing TlbImp from generating interop assemblies for referenced type libraries防止 TlbImp 为引用的类型库生成互操作程序集
【发布时间】:2012-08-06 00:52:57
【问题描述】:

我正在使用TlbImp 生成互操作程序集。我的几个类型库引用了一个核心类型库。

当我对First.dll 运行TlbImp 时,我得到Interop.First.dllInterop.Core.dll。问题是当我再次运行它时,针对Second.dllTlbImp再次尝试生成Interop.Core.dll,导致错误:

TlbImp : error TI0000 : System.ApplicationException - The assembly for referenced
type library, 'Core', will not be imported since it would overwrite existing file
'Core.dll'.

如何告诉TlbImp 不要为引用的程序集生成互操作?

【问题讨论】:

    标签: tlbimp


    【解决方案1】:

    我需要使用/reference 参数来显式识别现有的互操作程序集。

    最初我正在运行这些命令:

    > tlbimp Core.dll /out:Interop.Core.dll
    > tlbimp First.dll /out:Interop.First.dll
    > tlbimp Second.dll /out:Interop.Second.dll
    

    TlbImp 会尝试导入引用的Core.dll 并在第二条和第三条命令中在Core.dll 创建互操作,从而触发错误。

    要解决这个问题,我只需要明确指定 Core 互操作:

    > tlbimp Core.dll /out:Interop.Core.dll
    > tlbimp First.dll /reference:Interop.Core.dll /out:Interop.First.dll
    > tlbimp Second.dll /reference:Interop.Core.dll /out:Interop.Second.dll
    

    【讨论】:

      猜你喜欢
      • 2014-08-10
      • 2010-10-21
      • 2014-06-20
      • 2011-12-22
      • 2011-02-09
      • 2011-09-06
      • 2010-12-23
      • 2019-11-03
      • 1970-01-01
      相关资源
      最近更新 更多