Visual studio 2010 VS中的“发布…”与MSBuild中的/target:Publish之间的差异?

Visual studio 2010 VS中的“发布…”与MSBuild中的/target:Publish之间的差异?,visual-studio-2010,msbuild,clickonce,publish,Visual Studio 2010,Msbuild,Clickonce,Publish,我们正在尝试发布ClickOnce应用程序,但我们被迫使用MSBuild来发布,因为我们遇到了Visual Studio错误,Visual Studio愚蠢地坚持重新启用“应用程序应检查更新”,这是我们不希望看到的 使用MSBuild不会出现这种情况,但它不会产生与使用VisualStudio的“Publish…”相同的输出,尽管这样说。我们在生成后事件中混淆了代码,而MSBuild似乎在过程中的错误点对应用程序清单进行了签名 作为记录,我们使用以下MSBuild命令行: msbuild /t:

我们正在尝试发布ClickOnce应用程序,但我们被迫使用MSBuild来发布,因为我们遇到了Visual Studio错误,Visual Studio愚蠢地坚持重新启用“应用程序应检查更新”,这是我们不希望看到的

使用MSBuild不会出现这种情况,但它不会产生与使用VisualStudio的“Publish…”相同的输出,尽管这样说。我们在生成后事件中混淆了代码,而MSBuild似乎在过程中的错误点对应用程序清单进行了签名

作为记录,我们使用以下MSBuild命令行:

msbuild /t:Publish
使用MSBuild并启用模糊处理会产生输出,但当我尝试从生成的清单安装应用程序时,会出现以下ClickOnce错误:

* Activation of http://download.foo.com/Test/Foo.application resulted in exception. Following failure messages were detected:
     + File, Foo.exe, has a different computed hash than specified in manifest.
禁用模糊处理不会产生此错误,但显然我们不会发布未模糊的代码

我尝试使用MageUI重新签署清单,但这似乎无法解决问题


我的问题是:VisualStudio有什么不同之处?它是否使用不同的MSBuild目标?如果是,哪一个?如何修复证书问题?

问题可能是混淆。您是否可以尝试发布应用程序并在没有混淆的情况下对其进行签名,然后查看它的功能

此外,如果您使用的是法师: 1.在版本控制文件夹中的appname.exe.manifest上对应用程序清单进行签名。 2.对部署文件夹顶部文件夹中的部署清单myapp.application进行签名。
3.签署部署清单时,请确保转到“应用程序引用”选项卡并单击“选择Manigest”,然后在版本化文件夹中重新选择应用程序清单,然后对其进行签名。这似乎很愚蠢,但需要对部署清单进行签名。

问题可能在于混淆。您是否可以尝试发布应用程序并在没有混淆的情况下对其进行签名,然后查看它的功能

此外,如果您使用的是法师: 1.在版本控制文件夹中的appname.exe.manifest上对应用程序清单进行签名。 2.对部署文件夹顶部文件夹中的部署清单myapp.application进行签名。
3.签署部署清单时,请确保转到“应用程序引用”选项卡并单击“选择Manigest”,然后在版本化文件夹中重新选择应用程序清单,然后对其进行签名。这似乎很愚蠢,但需要对部署清单进行签名。

我发现,如果按“发布”选项卡中的“立即发布”按钮进行发布,则应用程序应检查更新状态是否持续,即VS不会再次打开它。但是,如果通过下拉菜单项发布,将重新启用检查。对我来说,这是一个明显的错误。

我发现,如果按“发布”选项卡中的“立即发布”按钮进行发布,应用程序应检查更新状态是否持续,即VS不会再次打开它。但是,如果通过下拉菜单项发布,将重新启用检查。对我来说,这是一个明显的错误。

就像我在原始问题中提到的那样,可能没有明确的措辞,禁用模糊处理会导致发布成功完成,并且能够在没有错误的情况下安装。但是,我不想发布非模糊代码。问题不在于混淆本身,而在于命令行MSBuild似乎没有正确处理它。mage解决方案工作得很好。现在,如果这可以很容易地实现自动化…这篇来自微软ClickOnce的博客展示了如何使用mage重新签署清单。这是mageUI的命令行版本,您可能可以找到编写脚本的方法。正如我在原始问题中提到的,可能没有明确的措辞,禁用模糊处理会导致发布成功完成,并且能够在没有错误的情况下安装。但是,我不想发布非模糊代码。问题不在于混淆本身,而在于命令行MSBuild似乎没有正确处理它。mage解决方案工作得很好。现在,如果这可以很容易地实现自动化…这篇来自微软ClickOnce的博客展示了如何使用mage重新签署清单。这是mageUI的命令行版本,您可能可以找到编写脚本的方法。