以下のこのブログ投稿では、正確な手順について詳しく説明しています
キーファイルのセットアップ
プロジェクトのプロパティ内の Visual Studio の [署名] タブを使用して、パスワードで保護された秘密/公開キーのペア (KeyPair.pfx) を作成します キー ペアから公開キーを抽出し、別のファイル (Key.snk) にコピーします sn.exe -p KeyPair.pfx Key.snk
KeyPair.pfx をビルド サーバーにコピーします。C:\Program Files\MSBuild\KeyFile.pfx を使用します。これは、$(MSBuildExtensionsPath) MSBuild プロパティによってアクセスできるためです。KeyPair.pfx ファイルを安全な場所に移動します。パスワードも秘密にしておいてください。Key.snk を、開発者がアクセスできる共有の場所にコピーします。署名用のプロジェクトのセットアップ
署名するアセンブリごとに、次のようにします。
- プロジェクトのプロパティを開きます | 署名ページ
- [X] アセンブリに署名するチェックボックスを選択します。
- [X] 遅延サインのみチェックボックスを選択します。
- キー ファイルのドロップダウンから選択します。
- 共有の場所を参照し、Key.snk ファイルを選択します。
- snk ファイルは、割り当てた各プロジェクト ディレクトリにコピーされます。
- テスト実行構成に使用できるように、プロジェクトの 1 つからソリューション項目にキー ファイルをコピーします。
再署名のためのテスト実行構成のセットアップ
アセンブリをインストルメント化し、単体テストのコード カバレッジを有効にする場合は、再署名用のキー ファイルを指定する必要があります。
LocalTestRun.testrunconfig ファイルを開きます [コード カバレッジ] タブで、キーを [再署名キー ファイル] として選択します。
開発者ワークステーションで厳密な名前の検証を無効にする
公開キーのみで遅延署名しているため、.NET CLR アセンブリの検証はローカルでビルドされたアセンブリで失敗します。検証が失敗すると、アセンブリを実行またはデバッグできなくなります。
開発時にこれを克服するには、ローカルでビルドするアセンブリの厳密な名前の検証を無効にし、公開キーで遅延署名する必要があります。
Visual Studio のコマンド プロンプト タイプを開きます。
sn.exe -tp Key.snk
これにより、トークンを含むいくつかのデータが出力されます。
タイプ:
sn -Vr *,YOUR_KEY_TOKEN
例:sn -Vr *,0123456789abcdef
これにより、公開キーで署名されたすべてのアセンブリの厳密な名前の検証が無効になります。sn -Vl を使用して、厳密な名前検証の現在の設定を一覧表示できます。
チーム ビルドの秘密キーのインストール
秘密キー (Key.pfx) はパスワードで保護されているため、チーム ビルドはアクセスできません。Nagaraju Palla のブログ: Using Password Protected Signing Keys in Team Build のおかげで、解決策が見つかりました。
ビルド サービス アカウントとしてチーム ビルド サーバーにログオンします。 Visual Studio でプロジェクトを開きます。 Visual Studio でプロジェクトをビルドします。 秘密鍵ファイルへのパスワードの入力を求められます。パスワードを入力 Visual Studio を閉じてログオフ 秘密鍵ファイルがビルド サービス アカウントのローカル証明書ストアにインストールされ、Team Build は再度パスワードを要求することなくアクセスできます。この証明書ストアは、ビルド サービス アカウントのパスワードと同じくらい安全です。(ヒント: キーファイルのパスワードと同じくらい強力にしてください)
TFSBuild.proj ビルド スクリプトの更新
チーム ビルドは、秘密鍵ファイルとパスワードにアクセスできます。これにより、アセンブリに完全に署名できます。
プロジェクト設定を上書きし、Team Build に秘密鍵ファイルを使用して部分署名を無効にするように指示するには、TFSBuild.proj で CustomPropertiesForBuild プロパティを設定する必要があります。
TFSBuild.proj ビルド スクリプトをチェックアウトする プレースホルダー プロパティを検索します (既定では 130 行目付近)。これを次のように置き換えます: SignAssembly=true;DelaySign=false;AssemblyOriginatorKeyFile=$(MSBuildExtensionsPath)\Key.pfxビルドをキューに入れる チーム ビルドの出力を確認する
チーム ビルドがアセンブリに厳密な名前を正しく付けたことを確認するには、sn.exe ユーティリティを使用して厳密な名前の署名を確認します。
Visual Studio のコマンド プロンプトを開きます タイプ: sn.exe -vf assemblyname.dll
すべてのアセンブリを同時に検証することもできます。
Visual Studio のコマンド プロンプトを開く タイプ: FOR %a IN (*.dll) DO sn.exe -vf %a