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:
/keyfile (Especifica um arquivo de chave de nome forte) (Opções do compilador translation from VPE for Csharp) em vez da AssemblyKeyFileAttribute atributo.
/keycontainer (Especifica um contêiner de chave de nome forte) (Opções do compilador translation from VPE for Csharp)em vez deAssemblyKeyNameAttribute.
/atrasoSign (atraso sinal a montagem) (Opções do compilador translation from VPE for Csharp)em vez deAssemblyDelaySignAttribute.
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