接前两篇继续:
Winform(C#.NET)自动更新组件的使用及部分功能实现
Winform(C#.NET)自动更新组件的使用及部分功能实现(续)
借鉴文章:
现象:
由于dll文件比较多,再加之变更比较频繁,而每次点击createxmltools都会重新生成不同的version,
而实际上文件并未发生变化,,导致重复更新,浪费资源。
解决方法:
根据文件的信息生成一个哈希值,通过比较哈希值来判断文件是否进行了修改。
主要使用类:MD5CryptoServiceProvider
类的注释:使用加密服务提供程序 (CSP) 提供的实现,计算输入数据的 System.Security.Cryptography.MD5 哈希值。
md5加密文件为hashcode,看文件是否真的有变化 MD5(string fileName) { string temp = ""; FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read); MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); byte[] md5byte = md5.ComputeHash(fs); int i, j; foreach (byte b in md5byte) { i = Convert.ToInt32(b); j = i >> 4; temp = temp + Convert.ToString(j, 16); j = ((i << 4) & 0x00ff) >> 4; temp = temp + Convert.ToString(j, 16); } return temp; }