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です。