Compilerfehler CS0281
Aktualisiert: November 2007
Fehlermeldung
"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 access was granted to 'AssemblyName1', but the output assembly is named 'AssemblyName2'. Try adding a reference to 'AssemblyName1' or changing the output assembly name to match.
friend-Zugriff ist ein neues CLR-Feature (Common Language Runtime), mit der eine Assembly die nichtöffentlichen Typen einer anderen Assembly erkennen kann. Dieser Fehler tritt auf, wenn die Assembly, die friend-Zugriff gewährt, den falschen Namen für die Assembly angibt, der der Zugriff gewährt wird. Weitere Informationen finden Sie unter Friend-Assemblys (C#-Programmierhandbuch).
Beispiel
In der folgenden Abfolge von Codebeispielen wird CS0281 generiert.
Die Dateien, mit denen die Assemblys mit starkem Namen erstellt werden, 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
// CS0281.cs
// compile with: /target:library /keyfile:CS0281.snk
public class A {}
// CS0281_b.cs
// compile with: /target:library /keyfile:CS0281.snk /reference:CS0281.dll
[assembly:System.Runtime.CompilerServices.InternalsVisibleTo("CS0281 , PublicKey=00240000048000009400000006020000002400005253413100040000010001004b2d4d56af7c50be2fcbbf97cb880b9e73ad84467a587191fef63aadc118a96cecf9d508cd679c907b6e20f71684300bdc2c0a851019af0c96b29bf8f1339753276041aefd67db46139e6348b3a12f29537b4dc6c2c19829df2c9ed6803f3c63c3b84cfa2728849386aea575c543a5f70fa85793d2946f15f7fe1ccb0c5e8fe0")]
class B : A {}
Im folgenden Beispiel wird CS0281 generiert.
Beachten Sie, dass in diesem Beispiel eine Ausgabedatei mit demselben Namen wie die Ausgabedatei im ersten Beispiel erstellt wird. Ändern Sie zur Behebung dieses Problems nicht die Assemblyattribute der Komponente, sondern fügen Sie Klasse C hinzu.
// 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 {}