Visual Studio 2010 - VS 中的 'Publish...' 和 MSBuild 中的 /target: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目标?如果是,是哪一个?如何解决证书问题?

问题可能是混淆。你能试着在没有混淆的情况下发布应用程序并对其进行签名吗?看看它能做什么?

此外,如果您使用的是法师:1.对应用程序清单(版本控制文件夹中的appname.exe.manifest)进行签名。2.在部署文件夹的顶部文件夹中签署部署清单(myapp.application)。3.当您签署部署清单时,请确保转到"应用程序参考"选项卡并单击"选择操作",然后在版本化文件夹中重新选择应用程序清单,然后签署它。这看起来很愚蠢,但需要签署部署清单。

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

相关内容

最新更新