1

一部のプライベート メソッドの単体テストを作成しようとしていますが、単体テストから[assembly: InternalsVisibleTo("DLLName")].

ただし、私のものは機能せず、別の解決策は公開鍵を追加することでした。単体テスト プロジェクトの公開鍵を取得しようとしましたが、sn -Tp DLLName厳密な名前が付けられていないと不平を言っています。

強く名前を付けられるようにするにはどうすればよいですか?私InternalsVisibleToは間違った方法を使用していますか?

4

3 に答える 3

3

現時点では、単体テスト アセンブリに厳密な名前が付けられていない可能性があります。結局のところ、厳密な名前を付ける理由がテスト アセンブリに適用されることはあまりないため、これは比較的珍しい要件です。

ただし、を使用するにはこれInternalsVisibleTo 必要です。これは、厳密な名前の製品アセンブリからテスト アセンブリへの参照を追加するようなものであり、厳密な名前のないアセンブリを厳密なアセンブリから参照できないためです。と名付けました。

したがって、本番アセンブリと同じ方法でテスト アセンブリに厳密な名前を付け (プロジェクト プロパティ、署名)、それにキー (たとえば、本番アセンブリと同じもの) を付けてから、公開キーを取得するために使用します。sn -Tp

InternalsVisibleToこれはすべて、最初の試みがうまくいかなかった理由を想定しています。これは、生産アセンブリが厳密に命名されているためです。そうでない場合は、テスト アセンブリに署名してもまったく役に立ちません。発生している問題に関する詳細情報を提供していただく必要があります。

于 2013-09-06T19:29:11.713 に答える
0

アセンブリ リンカーを使用して厳密な名前でアセンブリを作成および署名するには

コマンド プロンプトで、次のコマンドを入力します。

al /out:<assembly name> <module name> /keyfile:<file name>

このコマンドで、アセンブリ名は厳密な名前で署名するアセンブリの名前、モジュール名はアセンブリの作成に使用されるコード モジュールの名前、ファイル名はキー ペアを含むコンテナーまたはファイルの名前です。 . 次の例では、キー ファイル sgKey.snk を使用して、厳密な名前でアセンブリ MyAssembly.dll に署名します。

al /out:MyAssembly.dll MyModule.netmodule /keyfile:sgKey.snk
于 2013-09-06T19:33:26.510 に答える