Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio ClickOnce错误“;计算的哈希值与清单中指定的不同;传输已发布文件时_Visual Studio_Clickonce - Fatal编程技术网

Visual studio ClickOnce错误“;计算的哈希值与清单中指定的不同;传输已发布文件时

Visual studio ClickOnce错误“;计算的哈希值与清单中指定的不同;传输已发布文件时,visual-studio,clickonce,Visual Studio,Clickonce,我遇到了一个有趣的情况,我为一个主要由我们的姐妹公司使用和分发的程序维护代码。我们已经准备好向所有第三方用户分发该程序,因为从技术上讲,它是我们的姊妹公司程序,我们希望在他们的网站上托管它。(为了方便起见,我将在任何地方使用“program”而不是实际的应用程序名称,使用“www.SisterCompany.com”而不是它们的实际URL。) 因此,我准备好一切,设置发布设置以检查程序启动时的更新,以及所需的最低版本,并将安装文件夹URL和更新位置设置为“”,实际发布文件夹位置为“C:\Loca

我遇到了一个有趣的情况,我为一个主要由我们的姐妹公司使用和分发的程序维护代码。我们已经准备好向所有第三方用户分发该程序,因为从技术上讲,它是我们的姊妹公司程序,我们希望在他们的网站上托管它。(为了方便起见,我将在任何地方使用“program”而不是实际的应用程序名称,使用“www.SisterCompany.com”而不是它们的实际URL。)

因此,我准备好一切,设置发布设置以检查程序启动时的更新,以及所需的最低版本,并将安装文件夹URL和更新位置设置为“”,实际发布文件夹位置为“C:\LocalProjects\program\Publish\”。其他一切都很标准

发布后,我确认直接从我的C:驱动器上的发布位置运行时,所有内容都已正确安装并正常工作。所以我把所有东西都放在我们的FTP服务器上,我们姐妹公司的人把它拆下来,把所有东西都放在他们的Web服务器上的“/apps/program/”目录中

这就是它变坏的地方。当我尝试从他们的站点安装它时,我得到的
-文件Program.exe.config的计算哈希值与清单中指定的不同。
错误。我对它进行了一点测试,甚至在尝试从我们网络上的任何网络位置(本地C:驱动器除外)安装时都会出现错误

在VisualStudio中进行初始发布后,我没有更改任何文件(这就是我通过搜索此错误找到的答案/原因)

这可能是什么原因造成的?是因为我将安装文件夹URL设置为初始未发布的位置吗

如果需要任何其他信息,请告诉我


谢谢。

有可能其中一个FTP传输是以文本模式进行的,而不是以二进制方式进行的?

在整个周末对这个问题进行了猛烈抨击之后,我终于找到了答案。在取消项目签名并删除有问题的文件(一个xml文件)上的散列后,我得到了要安装的程序,但它给了我“Windows并排”错误。我深入到应用程序缓存中,发现文件是,而不是config.xml文件,它是clickonce安装程序所在网站的HTML文件之一。事实证明,web服务器似乎不喜欢提供.XML(或.mdb)文件

最终给了我最终的解决方案:

我必须确保选择了“使用”.deploy“文件扩展名”,这样web服务器就不会用它不喜欢的扩展名来破坏文件。


我不明白为什么一个文件的散列会不同。结果发现它根本不是同一个文件

对我来说,问题是.config转换是在生成清单之后完成的。

五年后,对于任何仍有问题的人:

第一个问题是配置MIME类型,nginx(/etc/nginx/MIME.types)上的MIME类型应如下所示:

    application/x-ms-manifest       application

对我来说,更奇怪的问题是我使用git来处理推送到服务器的过程,即

    git remote add live ssh://user@mybox/path/to/publish
    git commit -am "committing...";git push live master
在大多数情况下效果都很好,但它可能被注册为“更改”,从而阻止了应用程序在本地安装。一旦我开始改用scp:

   scp -r * user@mybox/path/to/dir/
它工作顺利


不幸的是,没有太多关于这方面的有用信息。

这是一个好主意,起初我怀疑是FTP传输造成了混乱。但是,我只需将发布文件夹复制到内部网络上的任何共享网络驱动器,就会出现相同的错误。