加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何检查装配是否已更改

发布时间:2020-12-16 01:31:14 所属栏目:百科 来源:网络整理
导读:是否可以判断一个组件是否已经改变? 我有一个标准项目,生成一个名为MyAssembly.dll的程序集. 在一个单独的项目中,我读取程序集并生成哈希. 当我为程序集生成哈希时,每次重新编译时它都是不同的.我已将程序集版本设置为静态,是否还需要更改其他任何属性? cl
是否可以判断一个组件是否已经改变?

我有一个标准项目,生成一个名为MyAssembly.dll的程序集.

在一个单独的项目中,我读取程序集并生成哈希.

当我为程序集生成哈希时,每次重新编译时它都是不同的.我已将程序集版本设置为静态,是否还需要更改其他任何属性?

class Program
{
    static void Main(string[] args)
    {
        var array = File.ReadAllBytes(@"MyAssembly.dll");
        SHA256Managed algo = new SHA256Managed();
        var hash = algo.ComputeHash(array);

        Console.WriteLine(Convert.ToBase64String(hash));
    }
}

谢谢

罗汉

解决方法

您可能需要使用版本号属性.哈希不起作用,因为无论何时重新编译程序集,它都会有所不同 – 即使代码根本没有改变.原因是每次编译时,编译器都会在程序集中嵌入一个guid,并将相同的guid放入相应的.pdb文件中.每次编译程序集时,guid都会改变.

这是调试器将程序集与其.pdb文件的正确版本匹配的原因(这也是为什么你必须始终将.pdb保存在你发布的任何内容上的原因,并且你不能依赖于能够生成一个pdb来匹配现有的程序集)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读