代码之家  ›  专栏  ›  技术社区  ›  John Leidegren

在.NET程序集后期生成的清单中插入资源

  •  1
  • John Leidegren  · 技术社区  · 14 年前

    有没有方法可以将资源插入到另一个程序集的清单中?

    我一直在尝试使用msbuild和ilmerge,但显然,由程序集链接器创建的资源程序集不能与ilmerge合并,看起来ilmerge不能只进行资源合并。

    al /out:Resources.dll /embed:Test.txt,Resources.Test
    

    ilmerge只会产生一个错误

    ILMerge.Merge: Could not load assembly from the location 'Resources.dll'
    
    1 回复  |  直到 14 年前
        1
  •  2
  •   John Leidegren    14 年前

    好吧,我得到了答案,我的ilmerge版本一定有问题…

    我取了c class template.cs文件,并以最简单的方式编译了它。

    > csc /target:library Class1.cs
    

    然后,我使用WindowsSDK的程序集链接器部分创建一个普通的资源程序集(更快)

    > al /out:TextFile1.dll /embed:TextFile1.txt
    

    最后一部分失败了,出现了一个愚蠢的空引用异常,上次我尝试了这个异常。但就在刚才,它像一个魅力。

    > ilmerge /out:Merged.dll Class1.dll TextFile1.dll
    

    您可以使用 ildasm

    > ildasm /text Merged.dll
    ...
    .mresource public TextFile1.txt
    {
      // Offset: 0x00000000 Length: 0x00000003
    }
    

    …就这样!

    作为构建过程的一部分,我使用它在构建后向程序集注入内容。例如,SVN日志信息。这样我就可以跟踪一个二进制文件到一个特定的修订版和个人。