1

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.

Google で検索すると、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それで、私の質問は、エラーが永久になくなるために何をしなければならないかということです.

4

1 に答える 1

0

不足している .pfx に関する限り... CertMgr.msc、特に Certificates - Current User\Personal\Certificates を見たことがありますか? ほとんどの場合、Visual Studio は SHA1 DigestValue を使用して、そこにあるコード署名証明書の SHA1 拇印と一致させます。右クリック > [すべてのタスク] > [エクスポート...] を選択して秘密キーを .pfx コンテナーにエクスポートし、それをビルド マシンに (msbuild で使用されるユーザー アカウントに) インポートできるはずです。

于 2015-04-29T01:22:21.447 に答える