Avviso del compilatore (livello 1) CS1699

Aggiornamento: novembre 2007

Messaggio di errore

Utilizzare l'opzione della riga di comando "opzione_compilatore" o le impostazioni di progetto appropriate anziché "nome_attributo".
Use command line option "compiler_option" or appropriate project settings instead of "attribute_name"

Per firmare un assembly, è necessario specificare un file di chiave. Prima di Microsoft Visual C# 2005, per la specifica del file di chiave venivano utilizzati gli attributi CLR nel codice sorgente. Questi attributi sono ora obsoleti.

A partire da Microsoft Visual C# 2005, per specificare il file di chiave è necessario utilizzare la pagina Firma di Progettazione progetti o Assembly Linker.

La pagina Firma di Progettazione progetti rappresenta il metodo preferito. Per ulteriori informazioni, vedere Pagina Firma, Progettazione progetti e Gestione delle firme di assembly e manifesti.

In Procedura: firmare un assembly con un nome sicuro vengono utilizzate le seguenti opzioni del compilatore:

Questi attributi sono divenuti obsoleti per i seguenti motivi:

  • L'incorporamento degli attributi nei file binari generati dal compilatore causava problemi di protezione. La chiave archiviata nel file binario era disponibile per chiunque accedesse al file.

  • La specifica di questi attributi generava problemi di utilizzabilità. Il percorso specificato negli attributi era relativo alla directory di lavoro corrente, che poteva essere modificata nell'ambiente di sviluppo integrato (IDE, Integrated Development Environment) o sulla directory di output. Nella maggior parte dei casi, il file di chiave è pertanto ..\\..\\mykey.snk. La presenza degli attributi inoltre rende più difficile per il progetto di sistema firmare correttamente gli assembly satellite. Specificando le opzioni del compilatore anziché questi attributi, è possibile utilizzare un nome file e un percorso completo per la chiave senza dover incorporare alcun elemento nel file di output. In questo modo, il sistema di progetto e il sistema di controllo del codice sorgente modificano correttamente il percorso completo durante gli spostamenti dei progetti e il sistema di progetto è in grado sia di mantenere un percorso relativo al progetto per il file di chiave, sia di passare un percorso completo al compilatore. Inoltre, gli altri programmi per la generazione possono firmare più facilmente gli output, passando il percorso corretto direttamente al compilatore, senza che sia necessario generare un file di origine con gli attributi corretti.

  • L'utilizzo degli attributi con gli assembly di tipo friend può ridurre l'efficienza del compilatore. Quando si specificano questi attributi, il compilatore non riconosce la chiave da utilizzare per stabilire se concedere l'accesso friend e procede in modo casuale. Sarà possibile identificare la chiave, quindi verificare se l'accesso friend è stato garantito in modo corretto, solo al termine della compilazione. Se si specifica il file di chiave con un'opzione del compilatore, è possibile stabilire immediatamente se concedere l'accesso friend.

Esempio

Il seguente codice di esempio genera l'avviso CS1699. Per correggere l'errore, rimuovere l'attributo ed eseguire la compilazione con l'opzione /delaysign.

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

Vedere anche

Attività

Procedura: firmare un assembly con un nome sicuro

Riferimenti

Pagina Firma, Progettazione progetti

Altre risorse

Gestione delle firme di assembly e manifesti