34

私のマシンには、同じプロジェクトの 2 つの異なるバージョンがあります。1 つはコード トランクから、もう 1 つはコード ブランチからです。これらのプロジェクトは、厳密な名前付けを有効にするために .pfx キーを使用します。プロジェクトのトランク バージョンを最初にコンパイルしようとしたときに、次のエラーが発生しました。

次のキー ファイルをインポートできません: sgKey.pfx。キー ファイルは、パスワードで保護されている場合があります。これを修正するには、証明書を再度インポートするか、次のキー コンテナー名で証明書を厳密な名前の CSP に手動でインストールしてください: VS_KEY_45891C38BC1BB345

これを解決するには、次のコマンドで sn.exe を使用します。

sn -i sg Key.pfx VS_KEY_45891C38BC1BB345

これにより、トランク プロジェクトの問題が解決され、問題なくビルドされます。

ただし、プロジェクトのブランチ バージョンをビルドしようとすると、(同じキー コンテナー名で) 同じ初期エラーが発生し、sn.exe を使用して証明書をインストールしようとすると (驚くことではありませんが) 次のエラーが発生します。 :

キー ペアのインストールに失敗しました -- オブジェクトは既に存在します

これは、sn コマンドで同じinfileコンテナーを使用したという点で理にかなっていますが、理解しようとしているのは次のとおりです。

  1. このオブジェクトが既に存在する場合、証明書が既にインストールされているように見えるため、プロジェクトがビルドに失敗するのはなぜですか。
  2. これを解決するにはどうすればよいですか (たとえば、アンインストールしてから再インストールできますか? また、できる場合、その方法は?)
4

2 に答える 2

59

原因を完全に理解することなく、問題を解決することができました。ここで同様の問題に関する投稿を見つけましたが、自分のマシンに単一のユーザーとしてしかログオンしたことがなかったため、私の状況には正確には適合しませんでした。

投稿にはコンテナを削除する方法が示されていましたが、コンテナが存在しないと言われたため、これも実行できませんでした。ただし、コマンドプロンプトを管理者として実行するように求められましたが、これは以前は実行していませんでした。これにより、証明書をアンインストールして再インストールすることができ、プロジェクトの両方のバージョンが正常にビルドされるようになりました。

私の推測では、2 回目にインストールしようとしたユーザーとは異なるユーザーの下で、証明書が (私によって) 最初にインストールされていたということです。単一ユーザーとしてのマシン。それは私にとって謎のままです。


概要:

  1. 開発者コマンド プロンプトを administrator として起動します。そうしないと、コンテナーが存在しないという誤解を招くエラーが表示されます。
  2. sn -d VS_KEY_XXXXXXXXXXX を実行して、古いキーを削除します。
  3. これで、証明書を再インストールできるはずです。
于 2014-05-20T08:17:11.013 に答える