.NET程序集是否会发生变化?

5
我需要提供所有程序集的32位CRC(循环冗余校验),以便存储(用于发布控制目的),并且稍后可以将其与系统上存在的程序集进行比较(以检查发布是否以某种方式损坏)。我没有问题计算程序集本身的CRC,我的问题是:.NET程序集是否会改变?即在安装到目标系统后,程序集的实际二进制内容是否会因任何原因而发生更改?如果确实如此,则CRC也会发生更改。请注意,我仅指打包在我的软件中的程序集,不检查标准系统程序集。

这不就是用于为你的程序集进行签名吗? - Svish
这更多是由于我们公司的发布管理方法,而不是其他任何因素。CRC 的事情源自主要嵌入式开发的过去,现在这个流程正在强制执行到任何 Windows 开发工作中。 - Alistair Evans
4个回答

6
您正在重新发明轮子,强命名已经实现了这一点。篡改程序集以使其具有正确的CRC32非常简单。破解强名称则不是简单的过程,因为它具有加密安全性。

是的,.NET已经内置了一个机制来处理您的要求,您绝对应该优先选择它而不是自定义方法。 - Dirk Vollmar
感谢你的替代建议,你说得没错,这是更高级别工程师所规定的公司政策。我真的无能为力。 - Alistair Evans

4
如果您不更新程序集(覆盖它们),它们将永远不会改变。

或者程序集可以重新签名。 - Igor Korkhov

0

它们只应在安装或更新时更改,除非程序员在其程序中包含了一些恶意的黑客。但是如果您有疑问,为什么不撤销用户对编写或修改相应文件的权限呢?


-1
我记得在某处阅读到.NET优化器会搜索并浏览所有程序集以 "优化" 它们?听说它在安装后进行这个操作,但我自己从未研究过。尽管如此,我想它们可能不会改变,但我不确定是否真的可以保证这一点。
试试看吧!祝你好运。

3
你在谈论Ngen.exe。它会创建另一个文件。 - Hans Passant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接