将资源注入构建后的.NET程序集清单中

时间:2010-09-09 11:28:01

标签: .net

我有办法将资源插入另一个程序集的清单吗?

我一直在尝试使用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 个答案:

答案 0 :(得分:2)

好的,我确实得到了答案,我的ILMerge版本一定是错误的......

我使用了C#类模板.cs文件并以最简单的方式编译了

> csc /target:library Class1.cs

然后我使用Windows SDK的Assembly Linker部分创建一个简单的资源程序集(更快)

> 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日志信息。这样我就可以跟踪二进制文件到特定版本和人员。