c# - .NET 二进制文件的哈希值可以用于检查底层源代码是否已更改

标签 c# .net sha1

我们有几个 VS 2008 解决方案,总共有近 90 个 dll + exe。他们都使用 .NET 3.5。

我想将解决方案和项目转换为 VS 2010(尚未准备好跨越到 2012 年),但保持相同的框架版本。

如果我生成使用 VS 2008 编译的 dll 的哈希值,而使用 VS 2010 生成的 dll 的另一个哈希值是否会匹配?

在某些情况下我会得到假阴性结果吗?换句话说,即使底层源代码没有改变,哈希值也会不匹配吗?

找不到任何权威引用资料可以帮助我解决这个问题。

最佳答案

不,事实上,仅仅连续编译一个 dll 两次就会产生不同的哈希值。有一些信息会导致哈希值在每次编译时发生变化。

但是,还有很多替代方案,请参阅作为对您的问题的评论发布的其他问题的链接。

此链接提供了差异原因和差异的详细信息。 http://blogs.msdn.com/b/ericlippert/archive/2012/05/31/past-performance-is-no-guarantee-of-future-results.aspx

此链接提供了一些关于解决基本需求的替代方法的建议。 Compare compiled .NET assemblies?

关于c# - .NET 二进制文件的哈希值可以用于检查底层源代码是否已更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19749539/

相关文章:

c# - 仅通过 GDI+ 和 DotNet 指定大小来创建 Dib

c# - 如果验证中有任何错误,请禁用提交按钮

php - 无法使用 sha1 哈希密码登录

php - SHA-1 在 Objective-C 和 PHP 中产生不同的结果......想法?

c# - 使用 DataTemplate 将 View 绑定(bind)到 ViewModel 时出现问题

c# - 为什么我会收到此错误?无法从中加载类型

c# - 如何判断一个值是被复制还是被引用?

android - 如何在 logcat 中获取 android 应用程序的 SHA-1/MD 5 指纹?

C# .Net6.0-如何通过C#更改Windows页面文件大小(虚拟内存)?

c# - Lambda 表达式不正确