2

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

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

4

1 回答 1

1

我自己之前就想过这个问题。我想,由于程序集非常易于使用,因此您可以将用户生成的内容存储在程序用完的程序集内似乎是合乎逻辑的。

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

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

于 2013-02-05T15:02:57.720 回答