Auf Englisch lesen

Freigeben über


Compilerfehler CS0281

"AssemblyName1" wurde Friend-Zugriff gewährt, die Ausgabeassembly hat aber den Namen "AssemblyName2". Fügen Sie einen Verweis auf "AssemblyName1" hinzu, oder ändern Sie den Namen der Ausgabeassembly entsprechend.

Friend-Zugriff ist eine neue CLR-Funktion (Common Language Runtime), die es einer Assembly ermöglicht, die nicht öffentlichen Typen einer anderen Assembly anzuzeigen. Dieser Fehler tritt auf, wenn die Assembly, die Friend-Zugriff gewährt, den falschen Namen für die Empfängerassembly angibt. Weitere Informationen finden Sie unter Friend-Assemblys.

Beispiel 1

In den folgenden Codebeispielen wird CS0281 generiert.

Die Dateien zum Erstellen der Assemblys mit starkem Namen werden wie folgt generiert:

  • 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 {}  

Beispiel 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 {}  

Beispiel 3

Im folgenden Beispiel wird CS0281 generiert.

In diesem Beispiel wird eine Ausgabedatei erstellt, die den gleichen Namen wie die Ausgabedatei im ersten Beispiel aufweist. Um das Problem zu beheben, ändern Sie nicht die Assemblyattribute der Komponente, und fügen Sie Klasse C hinzu.

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 {}