我有一个使用 ClickOnce 部署的 Visual Basic 项目。
当我使用 ClickOnce 发布它时,我没有发现任何问题。
当我使用 msbuild.exe 发布它时,我遇到了一个问题。当用户启动应用程序时,他收到一条错误消息:The deployment identity does not match the subscription.
我对同一个日志文件也有警告:
WARNINGS
* The manifest for this application does not have a signature. Signature validation will be ignored.
搜索谷歌,我被引导相信我可以通过在 Visual Studio 和 msbuild.exe 之间使用相同的 pfx 文件来解决问题(它不会自动找到 pfx 文件)。
在项目文件(blahblahblah.vbproj)中有这个节点:
<PropertyGroup>
...
<ManifestKeyFile>blahblahblah_TemporaryKey.pfx</ManifestKeyFile>
...
</PropertyGroup>
但是,在我的项目文件夹中,没有这样的文件。现在,Visual Studio 必须从某个地方获取该文件,因为我定期使用 Visual Studio 发布项目并且没有问题。
我还比较了生成的 2 个 blahblahblah.application 文件,唯一的区别在于版本(应该随每个出版物而改变)和 DigestValue。
<dependency>
<dependentAssembly dependencyType="install" codebase="Application Files\blahblahblah_I_1_0_0_84\blahblahblah.exe.manifest" size="101425">
<assemblyIdentity name="blahblahblah.exe" version="1.0.0.84" publicKeyToken="0000000000000000" language="neutral" processorArchitecture="x86" type="win32" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<dsig:DigestValue>lgzZRBBqxOOKi0IJcMCIBEWRU2A=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
</asmv1:assembly>
另外,您可以注意到,我有 publicKeyToken="0000000000000000",这对于两个版本都是相同的。
要解决此问题,用户必须卸载并重新安装该应用程序。不幸的是,这对我的客户来说是不可接受的,所以我必须找到解决方案。我可以尝试让他们接受一次,但我需要能够从 msbuild 或 Visual Studio 发布而没有此类冲突。
所以,我的问题是,我该怎么做才能让The deployment identity does not match the subscription
错误永远消失?