動作することにも驚いてPublicKeyToken
います-私のマシンでは、強制的に使用する必要がありますPublicKey
公開キー トークンが必要な理由は、厳密に名前が付けられたアセンブリを GAC に入れることができるためです。GAC の信頼性は高くなります。「MyTest」と呼ばれるアセンブリ (ブラウザーのコントロールなど、信頼されていない可能性があるもの) が GAC アセンブリの内部を呼び出すことができると、セキュリティ ホールになります。このタイプのハッキングを防ぐために公開鍵が必要です。
これにより、アセンブリが見つからない場合でも、運用環境が損なわれることはありません。この属性は、実行時ではなくコンパイル時に使用されます。
最も安全な方法は何ですか?
実稼働コードを破壊することが本当に心配な場合は、リリース ビルド中に属性を削除してください。
#if (DEBUG || TEST)
[assembly: InternalsVisibleTo("MyTest, PublicKeyToken=XxxxxYysakf")]
#endif
公開鍵トークンを必要とするプロジェクトがいくつかある場合 (そして、必要な鍵ペアが 1 つしかない場合) のようなファイルを定義し、AssemblyInfo.global.cs
それをリンクされたファイルとしてすべてのプロジェクトに追加することもできます。
class KeyTokens
{
public const string Global = ", PublicKeyToken=XxxxxYysakf";
}
これにより、物事が単純化されます(特に、本当に長いを使用する必要がある場合PublicKey
) :
#if (DEBUG || TEST)
[assembly: InternalsVisibleTo("MyTest" + KeyTokens.Global)]
[assembly: InternalsVisibleTo("HisTest" + KeyTokens.Global)]
[assembly: InternalsVisibleTo("TheirTest" + KeyTokens.Global)]
#endif