Compartir a través de


Advertencia del compilador (nivel 1) CS1699

Actualización: noviembre 2007

Mensaje de error

Utilizar la opción "opción_del_compilador" de la línea de comandos o la configuración de proyecto adecuada en vez de "nombre_de_atributo"
Use command line option "compiler_option" or appropriate project settings instead of "attribute_name"

Para firmar un ensamblado, es necesario especificar un archivo de clave. Antes de Microsoft Visual C# 2005, se especificaba el archivo de clave utilizando los atributos de CLR en el código fuente. Estos atributos se han dejado de utilizar.

A partir de Microsoft Visual C# 2005, debe utilizar la Página de firma del Diseñador de proyectos o la herramienta Assembly Linker para especificar el archivo de clave.

La Página de firma del Diseñador de proyectos es el método preferido; para obtener más información, vea Página Firma, Diseñador de proyectos y Administrar la firma de ensamblados y manifiestos.

En Cómo: Firmar un ensamblado con un nombre seguro se utilizan las opciones del compilador siguientes:

Estos atributos han quedado en desuso por las razones siguientes:

  • Existían problemas de seguridad debido a que los atributos se incrustaban en los archivos binarios generados por el compilador. Todo el que tenía un archivo binario también disponía de las claves almacenadas en el mismo.

  • Había problemas de uso debido al hecho de que la ruta de acceso especificada en los atributos era relativa al directorio de trabajo actual, el cual podía cambiar en el entorno de desarrollo integrado (IDE), o al directorio de resultados. Así, la mayoría de las veces es probable que el archivo de clave sea ..\\..\\miclave.snk. Los atributos también hacían que fuera más difícil para el sistema de proyectos firmar correctamente los ensamblados satélite. Cuando utilice las opciones del compilador en lugar de estos atributos, puede utilizar una ruta de acceso completa y un nombre de archivo para la clave sin que se incruste nada en el archivo de resultados; el sistema de proyectos y el sistema de control del código fuente pueden manipular correctamente esa ruta de acceso cuando se trasladan los proyectos de una ubicación a otra; el sistema de proyectos puede mantener una ruta de acceso relativa al proyecto para el archivo de clave y aun así pasar una ruta de acceso completa al compilador; otros programas de generación pueden firmar los resultados con mayor facilidad pasando la ruta de acceso apropiada directamente al compilador, en lugar de generar un archivo de código fuente con los atributos correctos.

  • El uso de atributos con ensamblados de confianza puede afectar a la eficacia del compilador. Cuando utiliza atributos, el compilador no conoce lo que es la clave cuando tiene que decidir si conceder o no la confianza y, por tanto, tiene que adivinar. Al final de la compilación, el compilador puede comprobar si su suposición es correcta una vez que conoce la clave finalmente. Cuando el archivo de clave se especifica con una opción del compilador, el compilador puede decidir inmediatamente si le otorga confianza.

Ejemplo

El código siguiente genera el error CS1699. Para resolver el error, quite el atributo y compile con /delaysign.

// CS1699.cs
// compile with: /target:library
[assembly:System.Reflection.AssemblyDelaySign(true)]   // CS1699

Vea también

Tareas

Cómo: Firmar un ensamblado con un nombre seguro

Referencia

Página Firma, Diseñador de proyectos

Otros recursos

Administrar la firma de ensamblados y manifiestos