4

「C# in Depth 2nd Edition」、Jon Skeet の本 (パート 2 の最後まで読んだばかり) では、7.7.3 で言及されてInternalsVisibleToおり、署名付きアセンブリでも使用できます。現時点では、署名はまったく使用していません。リリースされたバイナリのセキュリティの問題は実際には非常に重要であるため、プリプロセッサ変数テストを使用してリリース アセンブリの属性を完全に削除する予定です。

興味深いことに、署名されたアセンブリと を使用するのはどのように実用的でしょうInternalsVisibleToか? InternalsVisibleTo署名済みのフレンド アセンブリを指定するために使用するには、その公開キーを指定する必要があります。テスト中のアセンブリに依存するフレンド アセンブリをコンパイルした後にのみ、それを取得します (アセンブリの動的な読み込みとリフレクションは別として、コーディングと読みやすさを肥大化させるもの)。これは、アセンブリのブートストラップをテストする必要がある鶏卵問題のように聞こえます。これを自動化するために、MSBuild とスクリプトを使用したいくつかのトリックを想像できます。これを行うより実用的な方法はありますか?

面倒な作業が続く場合は、リリース ビルドのユニット テストを中止するという最初のアイデアに固執します (微妙なタイミングの問題がテストされないままになる可能性があるため、これはやや不満です...)。

4

1 に答える 1

10

ソリューション内のすべてのプロジェクトに同じキーを使用して署名します。プロジェクトごと、ビルドごとに異なるキーを生成しないでください。各プロジェクトにコピーするのではなく、プロジェクトのプロパティで各プロジェクトが参照する同じ物理キー ファイルを持つことをお勧めします。

PublicKeyそうすれば、それらはすべて同じ定数に関連付けられます。次のような単一のエントリを使用します。

[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("UnitTests, PublicKey=<your key>")]
于 2012-05-30T15:14:38.127 に答える