コンパイラ エラー CS0281Compiler Error CS0281

フレンド アクセスは 'AssemblyName1' に許可されましたが、出力アセンブリは 'AssemblyName2' という名前です。Friend access was granted to 'AssemblyName1', but the output assembly is named 'AssemblyName2'. 'AssemblyName1' への参照を追加するか、または出力アセンブリ名が一致するように変更してください。Try adding a reference to 'AssemblyName1' or changing the output assembly name to match.

フレンド アクセスは、アセンブリが別のアセンブリのパブリックでない型を参照できるようにする新しい共通言語ランタイム (CLR) 機能です。Friend access is a new common language runtime (CLR) feature that enables an assembly to see another assembly's non-public types. このエラーは、フレンド アクセスを許可するアセンブリが、許可されるアセンブリに間違った名前を指定した場合に発生します。This error occurs when the assembly granting friend access specifies the wrong name for the grantee assembly. 詳細については、Friend アセンブリに関するページを参照してください。For more information, see Friend Assemblies.

Example

次の一連のコード サンプルでは、CS0281 が生成されます。The following sequence of code samples will generate CS0281.

厳密な名前付きアセンブリの作成に使用されるファイルは、次のように生成されます。The files used to create the strong named assemblies are generated as follows:

  • sn -d CS0281.snksn -d CS0281.snk

  • sn -k CS0281.snksn -k CS0281.snk

  • sn -i CS0281.snk CS0281.snksn -i CS0281.snk CS0281.snk

  • sn -pc CS0281.snk key.publickeysn -pc CS0281.snk key.publickey

  • sn -tp key.publickeysn -tp key.publickey

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

Example

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

Example

次の例では CS0281 が生成されます。The following sample generates CS0281.

この例では、最初の例の出力ファイルと同じ名前の出力ファイルが作成されることに注意してください。Notice that this sample creates an output file with the same name as the output file in the first sample. 解決するには、コンポーネントのアセンブリ属性を変更したり、クラス C を追加したりしないでください。To resolve, do not change the assembly attributes of the component and add class 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 {}