VS和/ target中的'Publish ...'之间的区别:在MSBuild中发布?

时间:2011-06-08 05:11:45

标签: visual-studio-2010 msbuild clickonce publish

我们正在尝试发布ClickOnce应用程序,但我们不得不使用MSBuild这样做,因为我们遇到Visual Studio错误,Visual Studio愚蠢地坚持重新启用“应用程序应该检查更新” ,我们不想要。

使用MSBuild不会受此影响,但它不会产生与使用Visual Studio的“发布...”相同的输出(尽管MSDN说的是什么)。我们在后构建事件中混淆了代码,并且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重新签名清单,但这似乎无法解决。

我的问题是:Visual Studio以不同的方式做什么?它是否使用不同的MSBuild目标?如果是这样,哪一个?如何修复证书问题?

2 个答案:

答案 0 :(得分:1)

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

另外,如果你使用法师: 1.签署应用程序清单(版本化文件夹中的appname.exe.manifest)。 2.在部署foldres的顶级文件夹中签署部署清单(myapp.application)。 3.签署部署清单时,请务必转到“应用程序参考”选项卡并单击“选择Manigest”,然后在版本化文件夹中重新选择应用程序清单,然后对其进行签名。这看起来很愚蠢,但需要签署部署清单。

答案 1 :(得分:0)

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