英語で読む

次の方法で共有


コンパイラ エラー CS0281

フレンド アクセスは 'AssemblyName1' に許可されましたが、出力アセンブリは 'AssemblyName2' という名前です。 'AssemblyName1' への参照を追加するか、または出力アセンブリ名が一致するように変更してください。

フレンド アクセスは、アセンブリが別のアセンブリのパブリックでない型を参照できるようにする新しい共通言語ランタイム (CLR) 機能です。 このエラーは、フレンド アクセスを許可するアセンブリが、許可されるアセンブリに間違った名前を指定した場合に発生します。 詳細については、Friend アセンブリに関するページを参照してください。

例 1

次の一連のコード サンプルでは、CS0281 が生成されます。

厳密な名前付きアセンブリの作成に使用されるファイルは、次のように生成されます。

  • sn -d CS0281.snk

  • sn -k CS0281.snk

  • sn -i CS0281.snk CS0281.snk

  • sn -pc CS0281.snk key.publickey

  • sn -tp key.publickey

C#
// CS0281.cs  
// compile with: /target:library /keyfile:CS0281.snk  
public class A {}  

例 2

C#
// CS0281_b.cs  
// compile with: /target:library /keyfile:CS0281.snk /reference:CS0281.dll  
[assembly:System.Runtime.CompilerServices.InternalsVisibleTo("CS0281, PublicKey=00240000048000009400000006020000002400005253413100040000010001004b2d4d56af7c50be2fcbbf97cb880b9e73ad84467a587191fef63aadc118a96cecf9d508cd679c907b6e20f71684300bdc2c0a851019af0c96b29bf8f1339753276041aefd67db46139e6348b3a12f29537b4dc6c2c19829df2c9ed6803f3c63c3b84cfa2728849386aea575c543a5f70fa85793d2946f15f7fe1ccb0c5e8fe0")]  
class B : A {}  

例 3

次の例では CS0281 が生成されます。

この例では、最初の例の出力ファイルと同じ名前の出力ファイルが作成されることに注意してください。 解決するには、コンポーネントのアセンブリ属性を変更したり、クラス C を追加したりしないでください。

C#
// CS0281_c.cs  
// compile with: /target:library /out:CS0281.dll /keyfile:CS0281.snk /reference:CS0281_b.dll  
// CS0281 expected  
[assembly:System.Reflection.AssemblyVersion("3")]  
[assembly:System.Reflection.AssemblyCulture("en-us")]  
class C : B {}  
public class A {}