11

WindowsサーバーコンピューターでClickOnceWindowsフォームプロジェクト(.NET 3.5 / Visual Studio 2010)をビルドしようとしています。( Hudson CIを使用してビルドプロセスを自動化するために。)

ClickOnceマニフェストに署名するために、VisualStudioで一時キーを作成しましたtemp.pfx。VisualStudioからワークステーションにプロジェクトを正常にビルドして展開できます。しかし、サーバーでMSBuildを実行すると、次のエラーメッセージが表示されます。

C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Microsoft.Common.targets(1970,9):エラーMSB3326:次のキーファイルをインポートできません:。キーファイルはパスワードで保護されている可能性があります。これを修正するには、証明書を再度インポートするか、証明書を現在のユーザーの個人証明書ストアに手動でインポートしてみてください。[C:.hudson \jobs[...]。csproj]

C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Microsoft.Common.targets(1970,9):エラーMSB3321:キーファイル"temp.pfx"のインポートがキャンセルされました。[C:.hudson \jobs[...]。csproj]

私は運がなくて次の質問と回答をすべて試しました。

  • スタックオーバーフローの質問キーファイルをインポートできません'blah.pfx'-エラー'キーファイルはパスワードで保護されている可能性があります'

    =>私の場合、エラーメッセージは証明書ストアの名前を示すのではなく、代わりに「現在のユーザーの個人証明書ストア」と表示します。

    =>コンテナ名()として「Personal」を使用して受け入れられた回答を試行してもsn -i temp.pfx personal、キーの解析に失敗します。

    ALiS_TemporaryKey.pfxのPKCS#12blobの解析に失敗しました-内部エラーが発生しました。

  • スタックオーバーフローの質問MSBuildを使用してClickOnceに署名するか、アセンブリでエラーMSB3321が発生する

    =>受け入れられた回答を試しましたが、「ユーザープロファイルにアクセスできないか、インポートする秘密鍵に、システムにインストールされていない暗号化サービスプロバイダーが必要な可能性があるため、キーファイルをインポートできません」

    => Windowsエクスプローラーでファイルをダブルクリックしてインポートしようとすると同じことが起こります(RobinDotNetの提案)

  • スタックオーバーフローの質問MSBuild、Team Build、およびTFSでPFXファイルを使用してアセンブリに署名する

    =>その質問のOPは、上記の2つの回答でも失敗しましたが、残念ながら、彼が得た回答でさえ私を助けてくれませんでした。

    ビルドマシンでMSBuildを実行するユーザーとしてログインし、手動でMSBuildを呼び出し、プロンプトが表示されたらパスワードを入力します。

    =>ログインして実行しましmsbuild myproject.slnたが、パスワードの入力を求められませんでした。

    最終的に修正されたのは、TFSビルドサービスがローカルマシンで管理者を実行するアカウントを作成することでした。

    => Hudson(より正確にはTomcat )を実行するアカウント、すでにローカル管理者です。「管理者として実行」コマンドラインからMSBuildを実行しようとしても、同じエラーメッセージが表示されます。


更新:同じサーバー上のVisualStudioでソリューションを開いてビルドしようとしました。同じエラーが発生します。プロジェクトのプロパティの[署名]タブでPFXファイルを再インポートしようとすると、「無効なパスワード」と表示されます。ワークステーションのVisualStudioのまったく同じソリューションにまったく同じファイルをインポートし、まったく同じパスワードを指定しようとすると、それは受け入れられます。

更新2: Visual Studio 2008で生成した古い一時キーを取得すると、サーバーの証明書ストアに正常にインポートできます。VisualStudio2010で新しく作成した一時キーはインポートできません。

更新3:サーバーのVisual Studioで新しい「一時キー」を作成し、サーバーとワークステーションの両方でClickOnceマニフェストに署名するために使用することができました。私はそれについて合理的な説明をすることはできません-両方のコンピューターは64ビットであり、私は両方でVisualStudio2010を使用しています。どちらにもv3.5とv4(4.0.30319)の.NETFrameworkがインストールされています。私のワークステーションはWindows7Professionalであり、サーバーはWindows Server 2008R2Standardです。

4

4 に答える 4

8

ビルドを実行しているマシンにPFXファイルをコピーします。それをダブルクリックして、マシンの証明書マネージャーにインストールします。ビルドに使用したアカウントにログインしていることを確認してください。

その他の提案/質問:マシンに正しいバージョンの.NETがインストールされていますか?そのマシンの証明書ストアに書き込む特権がありますか?

Visual Studioプロジェクトを開いて、プロジェクトのプロパティに移動し、新しい証明書を作成しようとすると、機能しますか?PFXファイルを作成し、プロジェクトに追加する必要があります。そして、それを証明書ストア(メニューStart / certmgr.msc)で見ることができますか?

于 2012-07-04T23:52:04.323 に答える
0

一時的な.pfxファイルを作成し、パスワードをEMPTYのままにすると、ビルドマシンで正常に機能することがわかりました。空のままにしておくことができるとは思いもしませんでしたが、OPに関しては初めて失敗しました。パスワードなしで2番目のtemp.pfxを作成し、ビルドサーバー上に構築しました。

于 2015-02-05T20:36:17.727 に答える
0

私はまったく同じ問題を抱えていました。そして、ビルドマシンにWindows SDK 7.1 for.net4.0をインストールして修正しました。PS最初にSDK8.0Aをインストールしましたが、歌うことを除いてビルドは正常に機能していました。7.1はシステム内のいくつかのコンポーネントを更新しているようです。そのため、pfxが機能し始めます。

于 2015-04-16T08:55:19.057 に答える
-1

同じ問題が発生し、TFSマシンにインポートできませんでした。開発者のマシン(プロジェクトのプロパティ、署名ページ、詳細をクリック)で詳細をエクスポートし、[詳細]-> [タブの詳細]をクリックしてから、パスワードを使用してエクスポートする必要がありました。エクスポートしたファイルをTFSにコピーし、同じパスワードを使用します:完了

于 2014-03-14T18:08:31.663 に答える