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