.net - tlbimp如何用于指定不同的文件和程序集版本?

标签 .net com-interop tlbimp

我们正在使用tlbimp生成互操作程序集。我们想在互操作程序集上同时标记一个文件版本和一个程序集版本。但是,tlbimp上的/asmversion选项似乎将它们都设置为相同的值。

有谁知道如何使用tlbimp在互操作程序集上设置不同的文件和程序集版本?

最佳答案

最后,我们在Codeplex上找到了一个有关名为tlbimp2的项目的链接,并编译了我们自己的tlbimp2修改版本:

  • http://clrinterop.codeplex.com/discussions/208832
  • http://clrinterop.codeplex.com/SourceControl/changeset/view/39798

  • 我从2的tlbimp项目中获取了代码,并按照1的方式对其进行了修改。我们必须解决一些问题:

    在TlbImp.cs中,由于FileVersion属性为空,因此我必须根据FileVersionInfo.GetVersionInfo的结果显式地汇编文件版本号:
        if (Options.m_strFileVersion == null)
        {
            // get the fileversion
            var versionInfo = 
                FileVersionInfo.GetVersionInfo(Options.m_strTypeLibName);
            Options.m_strFileVersion = 
                versionInfo.FileMajorPart 
                + "." + versionInfo.FileMinorPart 
                + "." + versionInfo.FileBuildPart 
                + "." + versionInfo.FilePrivatePart;
        }
    

    在tlbimpcode.cs中,我不得不切换:
     AsmBldr.DefineVersionInfoResource(
       strProduct, 
       strProductVersion, 
       strCompany, 
       strCopyright, 
       strTrademark);
    

    至:
     AsmBldr.DefineVersionInfoResource();
    

    否则将不使用自定义资源。

    希望这可以帮助其他遇到相同问题的人。

    关于.net - tlbimp如何用于指定不同的文件和程序集版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5455520/

    相关文章:

    .net - 如何比较两个dll的内容?

    .net - 无法在经典 ASP/VBScript 页面中实例化 .Net COM 对象(错误 ASP 0177)

    c# - 从 C# COM dll 返回 S_FALSE

    c# - 导入程序集中的 CoClass 接口(interface)到底是做什么用的?

    .net - Visual Studio 社区 2015 更新 1 生成问题

    c# - 当将站点中的所有扩展名从 .htm 更改为 .aspx 时,这会起作用吗?

    .net - 如何在 WPF 中制作模态对话框?

    c# - 如何在 C# 中声明经典 COM 接口(interface) IBindCtx?

    c# - 将 c# 匿名类对象公开给 COM (JavaScript)