aviso do compilador (nível 1) CS1699

Mensagem de erro

Usar opção de linha de comando "compiler_option" ou configurações de projeto apropriadas em vez de "attribute_name"

Para assinar um assembly, é necessário especificar um arquivo de chave.Antes para Microsoft Visual C# 2005, você especificou o arquivo de chave usando atributos CLR no código-fonte. Esses atributos são agora desaprovados.

A partir de Microsoft Visual C# 2005, você deve usar o Página de assinatura of the Designer de projeto ou o vinculador de assembly para especificar o arquivo de chave.

The Página de assinatura of the Designer de projeto é o método preferencial; para obter mais informações, consulte Assinatura de Página, o criador do projeto e Gerenciando Assinatura de Assembly e Manifesto.

The Como: Assinar um assembly com um nome forte usa as opções do compilador:

Esses atributos uso pelos seguintes motivos:

  • Houve problemas de segurança devido aos atributos sejam incorporados em arquivos binário produzido pelo compilador.Todas as pessoas que tinha o binário também tinham as chaves armazenadas nele.

  • Houve problemas de usabilidade devido ao fato de que o caminho especificado nos atributos era relativo à diretório de trabalho corrente, que pode ser alterada no ambiente de desenvolvimento integrado (IDE) ou para o diretório de saída.Assim, é provável que seja a maioria das vezes o arquivo de chave\\..\\mykey.snk.Atributos também tornam mais difícil para o sistema de projeto assinar assemblies satélites corretamente.Quando você usar as opções do compilador em vez desses atributos, você pode usar um caminho totalmente qualificado e nome de arquivo para a chave sem nada sendo incorporado no arquivo de saída; o sistema de projeto e o sistema de controle do código-fonte pode manipular corretamente esse caminho completo quando projetos são movidos ao redor; o sistema de projeto pode manter um caminho relativo a projeto até o arquivo de chave e ainda passar um caminho completo para o compilador; outros programas de compilação podem assinar mais com com facilidade saídas, passando o caminho apropriado diretamente para o compilador, em vez de gerar um arquivo de origem com os atributos corretos.

  • Usando atributos com conjuntos de módulos de amigo pode atrapalhar a eficiência do compilador.Quando você usa atributos, o compilador não sabe qual é a chave quando tem que decidir se deve ou não conceder amizade e por isso deve adivinhar.No participante da compilação, o compilador é capaz de verificar a estimativa depois que ele finalmente saiba a chave.Quando o arquivo de chave é especificado com uma opção do compilador, o compilador pode decidir se deseja conceder amizade imediatamente.

Exemplo

O exemplo a seguir gera CS1699.Para resolver o erro, remova o atributo e compilar com /delaysign.

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

Consulte também

Tarefas

Como: Assinar um assembly com um nome forte

Referência

Assinatura de Página, o criador do projeto

Outros recursos

Gerenciando Assinatura de Assembly e Manifesto