使用 VS 2019 编译的 ClickOnce 应用程序会生成错误“文件 MyApplication.exe 的计算哈希值与清单中指定的不同”

问题描述 投票:0回答:1

我有一个使用 ClickOnce 部署的旧 Windows 应用程序。当使用 VS2010 和 VS2012 编译此应用程序项目和包含它的整个解决方案时,部署运行良好,但如果使用 VS2017 或 VS2019 编译相同的解决方案,则部署会失败,并出现错误“File, MyApplication.exe, has a different Compute hash from在清单中指定”。

我不知道如何继续解决这个问题。目前为止我还没有从网上发现类似的问题。

我的解决方案包含多个项目。两个主要项目是应用程序本身 MyApplication.csproj 和类库类型的部署项目 MyApplication_deploy.csproj。 MyApplication_deploy 项目仅包含一个仅用于 msbuild 的空类。此部署项目作为最后一个项目进行编译,并且包含一些构建后事件。构建成功后运行

C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe "$(ProjectDir)..\MyApplication\MyApplication.csproj"  /p:Configuration=Release /t:Publish /property:PublishDir=$(ProjectDir)..\..\export\MyApplication\;MyAppFolderName=ApplicationFiles

据我了解,这创建了 MyApplication 的新发布。构建后事件中的其他命令是各种复制命令,用于将一些资源复制到导出文件夹。

此导出文件夹中的应用程序文件将复制到安装服务器上的网站下,使用 ClickOnce 将应用程序从该安装服务器部署到客户端。从网站下载此应用程序并启动后出现此错误

  • 激活http://installation_server/MySite/MyApplication/ 导致异常。检测到以下故障消息: + 文件 MyApplication.exe 的计算哈希值与清单中指定的不同。

仅当我使用 VS2019 或 VS2017 编译此解决方案时,现在使用 VS2010 或 VS2012 编译时,才会发生这种情况。我没有对任何项目或解决方案文件进行任何更改。

这可能是什么原因以及解决方案?

c# visual-studio-2019 clickonce
1个回答
0
投票

我请求微软的支持来解决这个案例。他们建议这篇文章https://danielvaughan.org/posts/uwp/2015/08/28/Automaticly-Incrementing-the-Package.appxmanifest-Version-Number/这实际上帮助我解决了我的问题。

动作非常简单。使用预构建事件操作来运行 powershell 脚本,该脚本会自动增加 app.manifest 文件的版本号。所需的 powershell 脚本的内容包含在链接的文章中。

此Powershell脚本读取项目的app.appmanifest文件,替换Version属性,并覆盖app.appmanifest文件;让应用程序准备好提交,而无需手动修改清单文件。

此脚本是从我的单击一次应用程序项目的预构建事件中执行的。执行的命令是

Powershell -File "$(ProjectDir)IncrementVersion.ps1" "$(ProjectDir)\"

经过这些技巧后,我的应用程序部署成功了。

© www.soinside.com 2019 - 2024. All rights reserved.