代码之家  ›  专栏  ›  技术社区  ›  Duncan Smart

用于将类型库作为C#代码导入的工具

  •  2
  • Duncan Smart  · 技术社区  · 15 年前

    是否有工具可以将COM类型库导入/转换为C代码,而不是生成程序集?TLBIMP工具和TypeLibaryConverter类仅生成程序集。

    我已经成功地破解了C# ComImport 通过在生成的互操作程序集上运行Reflector并复制粘贴已分解的源代码来定义,但这通常需要在编译之前进行大量手动修补。

    我确信在过去我会遇到这样一个工具——但也许是它梦见的:——)

    3 回复  |  直到 15 年前
        1
  •  4
  •   Hans Passant    15 年前

    我不确定它是否会对您有用,但Tlbimp.exe托管版本的源代码已于发布 CodePlex . VS2010肯定会解决您的问题。

        2
  •  2
  •   JaredPar    15 年前

    这对今天的您没有帮助,但是下一个版本的C#将提供一个功能。它被称为NoPia或类型嵌入,具体取决于您阅读的演示文稿。此功能本质上将PIA程序集链接到您从中引用它的任何项目中。最终结果是单个EXE,无需部署互操作/PIA DLL。

    Misha关于该主题的帖子: http://blogs.msdn.com/mshneer/archive/2008/10/28/type-embedding-support-in-c.aspx

        3
  •  2
  •   Duncan Smart    15 年前

    正如我最初怀疑的那样,最好的解决方案是 ILMerge . 我不能选择要嵌入的COM API的某些部分,但它已经足够好了。

    set MERGEFILES=Interop.Foo.dll Interop.Bar.dll
    
    if "$(ConfigurationName)" == "Release" (
       ren "$(TargetFileName)" "_$(TargetFileName)"
       "$(ProgramFiles)\Microsoft\ILMerge\ILMerge.exe" /out:"$(TargetFileName)" "_$(TargetFileName)" %MERGEFILES%
    
       del "_$(TargetFileName)"
       del %MERGEFILES%
    )
    
    推荐文章