WindowsサーバーコンピュータでClickOnce Windows Formsプロジェクト(.NET 3.5/Visual Studio 2010)を構築しようとしています。 (HudsonCIでビルドプロセスを自動化するための努力において。)MSBuildは一時キー(エラーMSB3326とMSB3321)を使用してClickOnceマニフェストに署名できません
私は、Visual Studio、temp.pfx
で一時鍵を作成したのClickOnceマニフェストに署名するため。ワークステーション上のVisual Studioからプロジェクトを構築して展開することができます。しかし、私は次のエラーメッセージを取得サーバー上で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 \ジョブ[...] csproj。]
私は運がなくて、次の質問と回答の全てを試してみました:
スタックオーバーフローの質問Cannot import the keyfile 'blah.pfx' - error 'The keyfile may be password protected'
=>私の場合、エラーメッセージは証明書ストアの名前を示すのではなく、「現在のユーザーの個人証明書ストア」と表示されます。
=>コンテナ名として「個人」(
sn -i temp.pfx personal
)で受け入れ答えをしようと、それはキーの解析に失敗した場合でも:はALiS_TemporaryKey.pfxでPKCS#12ブロブ解析に失敗しました - - 内部エラーo ccurred。
スタックオーバーフロー質問Using MSBuild to sign ClickOnce or assembly results in error MSB3321
=>私は受け入れ答えを試してみましたが、「どちらのユーザープロファイルにアクセスまたはインポートしている秘密鍵ではないので、キーファイルをインポートすることができませんあなたのシステムにインストールされていない暗号化サービスプロバイダが必要な場合があります。 "
=> Windowsエクスプローラでファイルをダブルクリックしてインポートしようとすると同じことが起こります(RobinDotNetの提案)
スタックオーバーフローの質問Signing assemblies with PFX files in MSBuild, Team Build, and TFS
=>その質問のOPがあまりにも、上記の2つの答えで失敗したが、残念ながら彼が持っていなくても答えは私を助ける:
に
ビルドマシンでMSBuildを実行するユーザーとしてログインし、手動でMSBuildを起動し、プロンプトが表示されたらパスワードを入力します。
=>ログインして
msbuild myproject.sln
を実行しましたが、パスワードの入力を求められませんでした。最終的には、TFSビルドサービスがローカルマシン上で管理者を実行するアカウントを作成していました。
=>ハドソンを実行するアカウント(より正確には:Tomcat)すでにはローカル管理者です。私は "管理者として実行"コマンドラインからMSBuildを実行しようとしましたが、同じエラーメッセージが表示されます。
アップデート:私は、同じサーバー上のVisual Studioでソリューションを開いて、それを構築しようとしました。私は同じエラーを取得します。プロジェクトプロパティの[署名]タブでPFXファイルを再インポートしようとすると、「無効なパスワード」と表示されます。ワークステーションのVisual Studioで同じソリューションで同じファイルをインポートしようとしたときに、同じパスワードを入力しようとすると、それが受け入れられます。
アップデート2:私は、私は、Visual Studioの 2008で生成されていた古い一時鍵を取る場合、それが成功した当社のサーバーの証明書ストアにインポートすることができます。 Visual Studio 2010で新しく作成した一時キーはインポートできません。
アップデート3:私は、サーバー上のVisual Studioで新しい「一時キー」を作成し、ClickOnceのマニフェストに署名するために、サーバー上だけでなく、私のワークステーション上の両方にそれを使用することができました。私はそれについて合理的な説明をすることはできません - 両方のコンピュータは64ビットで、私は両方のVisual Studio 2010を使用しています。両方ともv3.5およびv4(4.0.30319).NETフレームワークがインストールされています。私のワークステーションはWindows 7 Professionalで、サーバーはWindows Server 2008 R2 Standardです。
2番目のアプローチと同じ結果になります:-( – chiccodoro
正直言って私は "Hudson"が何であるか分かりません。マシンに正しいバージョンの.NETがインストールされていますか?そのマシンの証明書ストアに書き込む権限がありますか?ビジュアルスタジオプロジェクトを開き、プロジェクトプロパティに移動して新しい証明書を作成しようとすると、動作しますか?pfxファイルを作成してプロジェクトに追加する必要があります。そして証明書ストアでそれを見ることができますか?(start/certmgr.msc) – RobinDotNet
私は、ハドソンをサイドノートで詳細にするなどの質問を言い換えました。 – chiccodoro