在dll构建完成后更新DLL metdata

时间:2013-02-05 14:56:54

标签: c# dll

我很好奇是否有办法在已经编译后更改托管DLL的metdata(例如产品名称)。我在这个问题中知道:Change Assembly Version in a compiled .NET assembly,他们提到使用ILMerge通过将IL合并到自身的克隆中来更新版本号,但是当查看ILMerge命令行标志时,我认为ILMerge不支持其他属性。

我想这样做的原因是我有一个部署结构,我有一个构建到许多客户端。我想在打包期间使用客户端名称标记已部署的dll,以便我可以判断是否在客户端之间复制了dll。

1 个答案:

答案 0 :(得分:1)

我在自己面前考虑过这个问题。我想,由于程序集很容易使用,因此您可以将用户生成的内容存储在程序运行的程序集中,这似乎是合乎逻辑的。

这种推理的问题在于,这意味着有人可以在没有最终用户意识到的情况下有效地改变DLL的内容(这是多少病毒起作用) - 你可以想象这是一个巨大的安全问题。如果组件经过数字签名,那么它就更加安全可靠,以便您知道是否/何时有人篡改了组件。

但是,如果你想在构建程序集之前进行微小的更改,你可能会尝试查看CodeDom(用于更改代码结构)或Reflection.Emit(对于使用“IL”直接构建装配。