ClickOnce部署后git上传出现TextWiz.deps.json哈希不匹配错误求助
错误含义
该错误说明ClickOnce部署清单中记录的TextWiz.deps.json文件哈希值,与用户下载到本地的文件实际计算出的哈希值不匹配。ClickOnce通过哈希校验确保部署文件未被篡改或意外修改,当两者不一致时会阻止安装,以此保障应用的完整性。
可能原因
使用命令行Git上传时,Git默认的换行符转换规则(将Windows系统的CRLF换行符转为LF)可能修改了TextWiz.deps.json的内容,导致文件哈希值发生变更,与ClickOnce发布时生成的清单记录不符。而手动上传时未触发该转换,因此此前部署正常。
解决方法
配置Git避免修改目标文件:
在项目根目录创建.gitattributes文件,添加以下内容,将TextWiz.deps.json标记为二进制文件,禁止Git对其进行换行符转换或其他文本处理:TextWiz.deps.json binary提交该文件到仓库后,重新发布ClickOnce应用并上传。
清理Git缓存并重新提交文件:
如果文件已被Git错误修改并提交,执行以下命令重置缓存并重新添加正确的文件版本:git rm --cached TextWiz.deps.json git add TextWiz.deps.json git commit -m "Fix deps.json hash mismatch" git push origin main重新发布并校验本地文件:
重新发布ClickOnce应用后,先在本地校验文件哈希是否匹配:- 使用PowerShell计算本地TextWiz.deps.json的SHA256哈希:
Get-FileHash -Path ".\Application Files\TextWiz_1_0_0_9\TextWiz.deps.json" -Algorithm SHA256 - 打开TextWiz.dll.manifest文件,查找对应TextWiz.deps.json的
hash节点,确认哈希值是否一致。若不一致,重新执行发布流程。
- 使用PowerShell计算本地TextWiz.deps.json的SHA256哈希:
禁用全局Git换行符转换(可选):
如果不需要Git自动转换换行符,可全局关闭该功能(会影响所有本地Git仓库,需谨慎操作):git config --global core.autocrlf false
内容的提问来源于stack exchange,提问作者Carson Ouckama
相关产品推荐
相关产品推荐

