2012-06-22 16 views
9

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

答えて

6

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

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

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

+0

2番目のアプローチと同じ結果になります:-( – chiccodoro

+0

正直言って私は "Hudson"が何であるか分かりません。マシンに正しいバージョンの.NETがインストールされていますか?そのマシンの証明書ストアに書き込む権限がありますか?ビジュアルスタジオプロジェクトを開き、プロジェクトプロパティに移動して新しい証明書を作成しようとすると、動作しますか?pfxファイルを作成してプロジェクトに追加する必要があります。そして証明書ストアでそれを見ることができますか?(start/certmgr.msc) – RobinDotNet

+0

私は、ハドソンをサイドノートで詳細にするなどの質問を言い換えました。 – chiccodoro

-1

同じ問題がありましたが、TFSマシンにインポートできませんでした。私は開発マシン(プロジェクトのプロパティ、ページの署名、詳細をクリック)にエクスポートしなければならなかったことが分かります。 詳細 - >タブの詳細を入力して、パスワードでエクスポートします。そのエクスポートされたファイルをTFSにコピーして同じパスワードを使用してください:done

+0

これらの手順はあまりにも曖昧すぎて本当に便利ではありません。 –

0

一時ファイルを作成してパスワードをEMPTYにしておくと、ビルドマシンで問題なく動作します。私はあなたがそれを空にして、それがOPのために失敗したのは初めてではないことに気付かなかった。パスワードなしの2番目のtemp.pfxを作成し、私のために構築サーバー上に構築しました。

+0

パスワードなしのPFXはあまり安全ではありません:-) – chiccodoro

0

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

関連する問題