有没有办法检查代码更改是否改变了二进制文件?

时间:2012-09-14 19:39:31

标签: c# .net visual-studio-2010 msbuild il

我认为如果C#代码没有改变,生成的IL将与每个构建相同。问题是从同一代码生成的2个EXE文件没有相同的哈希值。

我想检查代码样式的更改是否会生成不同的IL。我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:4)

你做了一个糟糕的假设。没有代码更改的重建将提供不同的二进制文件。

见:

https://stackoverflow.com/a/8927785/426894

  

每次运行编译器时,都应该得到不同的输出。

http://blogs.msdn.com/b/ericlippert/archive/2012/05/31/past-performance-is-no-guarantee-of-future-results.aspx

  

编译同一个C#程序两次保证生成相同的   二进制输出?

     

没有

答案 1 :(得分:1)

您可以使用开源.NET程序集浏览器和反编译器ILSpy来执行此操作。

enter image description here

答案 2 :(得分:1)

您可以使用一些工具来反汇编EXE并比较它们的内容。请查看此博客http://immitev.blogspot.com.br/2008/10/ways-to-compare-net-assemblies.html

[]的