8

私は Visual Studio 2012 を実行しており、バックエンド Web サービスとデスクトップ ソフトウェアを別々のソリューションで作成しています。デスクトップ ソフトウェアは管理者特権で ("管理者として") 実行する必要があるため、管理者特権の Visual Studio インスタンスでデスクトップ ソリューションを実行する必要があります。どちらのソリューションにも、署名済みライブラリ プロジェクトが含まれています。

昇格せずに Visual Studio インスタンスで Web サービス ソリューションを開くと、次のようなビルド エラーが発生します。

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

それを実行してこれを修正しようとすると、キーが既に存在するというエラー メッセージが表示されて失敗します

PFX ファイルを除外してから再インクルードしようとすると、正しく配置されませんが、[プロジェクト プロパティ] → [署名] の [厳密な名前のキー ファイル] ドロップダウンが空白になります。これに続いて、Web サービス ソリューションがビルドされますが、(昇格された) デスクトップ ソリューションでは、「アセンブリの生成に失敗しました -- 参照されたアセンブリ '編集済み' に厳密な名前がありません」というエラーが表示されてビルドが失敗するため、ライブラリが署名されていないようです。

Web サービス ソリューション内のドロップダウンから PFX ファイルを再度選択しようとすると (パスワードを再入力すると)、次のようになります。

キーのインポート中にエラーが発生
しました 存在しないトークンを参照しようとしました

(昇格された) デスクトップ ソリューションからの PFX ファイルの設定は機能しますが、正方形に戻ります。

昇格に応じて、Visual Studio はさまざまなキー ストアを調べて、PFX のロックを解除するものにアクセスできるようです。この問題を回避するには、昇格した Visual Studio の両方のインスタンスを実行する必要がありますか? または、どうにかして同じ場所を参照するように指示できますか?

4

1 に答える 1

0

@ccpanda のコメントはこれを解決しました。AssemblyKeyFileアーカイブを含めると、これが機能します。例えば:

[assembly: AssemblyKeyFile("HerpDerpWarblerManagementStudioProTM.snk")]

要するに、2 つの Visual Studio はそれぞれのモードに応じて異なるものを想定するということです。解決策は、彼らに同じことを思い込ませることではなく、何をすべきかを伝えることです。

.snk他のすべての開発者がビルドしようとするたびにパスワードを再入力したくない場合は、ファイルを使用する必要があるため、ファイルを使用することにしました。この質問にはさらに多くの情報があります。基本的に、あなたはファイルを使用するか、.snkビルドプロセスをコンパイルしてから、呼び出しでファイルに署名する必要があります.)sn.exe.pfx

(@ccpanda:コメントを回答として書いた場合(そしておそらくあなたが書いたので、スタックオーバーフローはそれが些細なことであると判断しました)、私はそれを回答としてマークします。)

于 2013-01-09T09:34:16.333 に答える