Partilhar via


Nomes de Assembly

Um nome de assembly é armazenado em metadados e tem um significativo impacto no escopo do conjunto de módulos (assembly) e uso por um aplicativo.Um conjunto de módulos (assembly) nome de alta segurança tem um nome totalmente qualificado que inclui o nome do conjunto, cultura, chave pública e número da versão.Isso é frequentemente referido como o nome de exibição, e para conjuntos de módulos (assemblies) carregados pode ser obtido usando a propriedade FullName.

O tempo de execução usa essas informações para localizar o assembly e diferenciá-lo de outros assemblies com o mesmo nome.Por exemplo, um conjunto de módulos (assembly) de nome de alta segurança denominado myTypes poderia ter o seguinte nome totalmente qualificado:

myTypes, Version=1.0.1234.0, Culture=en-US, PublicKeyToken=b77a5c561934e089c, ProcessorArchitecture=msil
Observação:

Arquitetura do processador é adicionada t o a identidade do assembly do .NET estrutura versão 2.0, para permitir que versões específicas do processador de módulos (assemblies).Você pode criar versões de um assembly cuja identidade é diferente apenas pela arquitetura de processador, por exemplo ve de processador específico 32 bit e 64 bit rsions.A arquitetura do processador não é exigida para nomes de alta segurança.Para obter mais informações, consulte AssemblyName.ProcessorArchitecture.

Nesse exemplo, o nome totalmente qualificado indica que o assembly myTypes tem um nome de alta segurança com um símbolo de chave pública, tem o valor cultural para inglês (EUA) e tem um número de versão de 1.0.1234.0.Sua arquitetura do processador é "MSIL", que significa que ele será compilado just-in-time (JIT) para códigos de 32-bit ou 64-bit dependendo do sistema operacional e do processador.

O código que solicita tipos em um conjunto de módulos (assembly) deve usar um nome de assembly totalmente qualificado.Isso é chamado ligação totalmente qualificada.Ligação parcial, que especifica apenas o nome de um conjunto de módulos (assembly) não é permitida ao referenciar assemblies no .NET Framework.

Todas as referências aos conjuntos de módulos que compõem o .NET Framework também devem conter um nome de assembly totalmente qualificado.Por exemplo, para fazer referência ao assembly do System.Data do .NET Framework para a versão 1.0 incluiria:

System.data, version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

Observe que a versão corresponde ao número de versão de todos os assemblies do .NET Framework fornecidos com o .NET Framework versão 1.0.Para conjuntos de módulos do .NET Framework, o valor cultural é sempre neutro, e a chave pública é mesma mostrada no exemplo acima.

Por exemplo, para adicionar uma referência do conjunto de módulos em um arquivo de configuração para configurar um listener de rastreamento, você deveria incluir um nome totalmente qualificado do assembly do sistema .NET Framework:

<add name="myListener" type="System.Diagnostics.TextWriterTraceListener, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="c:\myListener.log" />
Observação:

O tempo de execução trata nomes assembly sistema autônomo no caso de sensível ao ligar para um assembly, mas preserva qualquer que seja caso é usado em um nome de assembly.Várias ferramentas na Windows Software Development Kit (SDK) lidar com nomes assembly sistema autônomo diferenciar diferenciar maiúsculas de minúsculas. Para obter melhores resultados, gerencie nomes de assemly como se diferenciassem maiúsculas de minúsculas.

Nomeando componentes de aplicativo

O tempo de execução não considera o nome de arquivo ao determinar uma identidade de um conjunto de módulos (assembly).A identidade do conjunto de módulos (assembly), que consiste do nome do conjunto de módulos (assembly), versão, cultura e nome de alta segurança, deve ser clara para o tempo de execução.

Por exemplo, se você tiver um assembly chamado myAssembly.exe faz referência a um assembly chamado myAssembly.dll, vinculação ocorre corretamente se você executar myAssembly.exe.No entanto, se outro aplicativo é executado usando o método myAssembly.exeAppDomain.ExecuteAssembly, o tempo de execução determina que "myAssembly" já está carregada quando myAssembly.exe solicita ligação para "myAssembly." Nesse caso, myAssembly.dll nunca é carregado.Porque myAssembly.exe não contém o tipo solicitado, uma TypeLoadException ocorre.

Para evitar esse problema, verifique se os conjuntos de módulos (assemblies) que compõem seu aplicativo não tenham o mesmo nome de assembly ou coloque conjuntos de módulos (assemblies) com o mesmo nome em pastas diferentes.

Observação:

Se você colocar um assembly de nome forte no global cache de assemblies, sistema autônomo nome de arquivo do sembly deve corresponder ao nome do assembly (não incluindo a extensão de nome de arquivo, sistema autônomo .exe ou.DLL ).Por exemplo, se nome de arquivo de um assembly é myAssembly.dll, o nome do assembly deve ser myAssembly .Conjuntos privados implantados apenas no roo diretório de aplicativo t pode ter um nome de assembly que seja diferente do nome de arquivo.

Consulte também

Tarefas

Como: Determinar o nome totalmente qualificado de um assembly

Conceitos

Criando assemblies

Assemblies de Nomes Fortes

Cache global de assemblies

Como o Runtime Localiza Assemblies

Outros recursos

Programação com assemblies