1. ホーム
  2. .net

InternalsVisibleTo属性が機能しない

2023-10-31 12:33:48

質問

私は InternalsVisibleTo アセンブリ属性を使用して、.NET クラス ライブラリの内部クラスをユニット テスト プロジェクトから見えるようにしようとしています。 なぜか、次のようなエラーメッセージが表示され続けます。

'MyClassName' は保護レベルのためアクセスできません。

両方のアセンブリは署名されており、属性宣言に正しいキーが記載されています。 何か思い当たることはありますか?

どのように解決するのですか?

属性に指定した公開鍵が正しいかどうか、絶対に確認してください。 公開鍵トークンだけでなく、完全な公開鍵を指定する必要があることに注意してください。 以下のような感じです。

[assembly: InternalsVisibleTo("MyFriendAssembly,
PublicKey=0024000004800000940000000602000000240000525341310004000001000100F73
F4DDC11F0CA6209BC63EFCBBAC3DACB04B612E04FA07F01D919FB5A1579D20283DC12901C8B66
A08FB8A9CB6A5E81989007B3AA43CD7442BED6D21F4D33FB590A46420FB75265C889D536A9519
674440C3C2FB06C5924360243CACD4B641BE574C31A434CE845323395842FAAF106B234C2C140
6E2F553073FF557D2DB6C5")]

320 桁の 16 進数です。 おそらく、他のアセンブリの参照で使用される公開鍵トークンだけでは、誰かが友人アセンブリの身元を偽装することは容易でしょう。