Error del compilador CS0281
Actualización: noviembre 2007
Mensaje de error
Se concedió acceso de confianza a 'Nombre_de_ensamblado1', pero el ensamblado de salida se denomina 'Nombre_de_ensamblado2'. Intente agregar una referencia a 'Nombre_de_ensamblado1' o cambiar el nombre del ensamblado de salida para que coincida.
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.
El acceso de confianza es una nueva función de Common Language Runtime (CLR) que permite que un ensamblado vea los tipos no públicos de otro ensamblado. Este error se produce cuando el ensamblado que concede acceso de tipo amigo especifica un nombre incorrecto para el ensamblado al que se concede el acceso. Para obtener más información, vea Ensamblados de confianza (Guía de programación de C#).
Ejemplo
La secuencia siguiente de ejemplos de código generará el error CS0281.
Los archivos utilizados para crear los ensamblados con nombre seguro se generan como sigue:
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 {}
El código siguiente genera el error CS0281.
Observe que este ejemplo crea un archivo de resultados con el mismo nombre que el archivo de resultados del primer ejemplo. Para resolverlo, no cambie los atributos de ensamblado del componente y agregue la clase 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 {}