Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O nome de um assembly é armazenado em metadados e tem um impacto significativo no escopo do assembly e no uso por um aplicativo. Um assembly de nome forte tem um nome totalmente qualificado que inclui o nome, a cultura, a chave pública, o número da versão e, opcionalmente, a arquitetura do processador. Utilize a propriedade FullName para obter o nome totalmente qualificado, frequentemente chamado de nome de exibição, para assemblies carregados.
O tempo de execução usa as informações de nome para localizar o assembly e diferenciá-lo de outros assemblies com o mesmo nome. Por exemplo, uma assemblagem com nome forte chamada myTypes pode ter o seguinte nome completamente qualificado:
myTypes, Version=1.0.1234.0, Culture=en-US, PublicKeyToken=b77a5c561934e089c, ProcessorArchitecture=msil
Neste exemplo, o nome totalmente qualificado indica que o conjunto myTypes tem um nome forte com um token de chave pública, tem o valor cultural para inglês dos Estados Unidos e utiliza a versão 1.0.1234.0. Sua arquitetura de processador é msil, o que significa que ele será compilado just-in-time (JIT) para código de 32 bits ou código de 64 bits, dependendo do sistema operacional e do processador.
Sugestão
A ProcessorArchitecture informação permite versões de montagens específicas do processador. Você pode criar versões de um assembly cuja identidade difere apenas pela arquitetura do processador, por exemplo, versões específicas do processador de 32 bits e 64 bits. A arquitetura do processador não é necessária para nomes fortes. Para obter mais informações, consulte AssemblyName.ProcessorArchitecture.
O código que solicita tipos numa assembly deve usar um nome de assembly totalmente qualificado. Isso é chamado de vinculação totalmente qualificada. A vinculação parcial, que especifica apenas um nome de assembly, não é permitida ao fazer referência a assemblies no .NET Framework.
Todas as referências de assemblies aos assemblies que compõem o .NET Framework também devem conter o nome totalmente qualificado do assembly. Por exemplo, uma referência ao assembly System.Data .NET Framework para a versão 1.0 incluiria:
System.data, version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
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 assemblies do .NET Framework, o valor de cultura é sempre neutro e a chave pública é a mesma mostrada no exemplo acima.
Por exemplo, para adicionar uma referência de assembly num ficheiro de configuração para configurar um ouvinte de rastreio, incluís o 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 de assembly como insensíveis a maiúsculas e minúsculas quando vinculado a um assembly, mas preserva qualquer caso usado em um nome de assembly. Várias ferramentas no SDK do Windows tratam os nomes de assembly como sensíveis a maiúsculas e minúsculas. Para obter melhores resultados, gerencie nomes de assembly como se fossem sensíveis a diferenças de caso.
Nomear componentes do aplicativo
O tempo de execução não considera o nome do arquivo quando determina a identidade de uma assemblagem. A identidade do assembly, que consiste no nome do assembly, versão, cultura e nome forte, deve ser clara para o tempo de execução.
Por exemplo, se você tiver um assembly chamado myAssembly.exe que faça referência a um assembly chamado myAssembly.dll, a vinculação ocorrerá corretamente se você executar myAssembly.exe. No entanto, se outro aplicativo executa myAssembly.exe usando o método AppDomain.ExecuteAssembly, o tempo de execução determina que myAssembly já está carregado quando myAssembly.exe solicita vinculação ao myAssembly. Neste caso, myAssembly.dll nunca é carregado. Como myAssembly.exe não contém o tipo solicitado, ocorre TypeLoadException .
Para evitar esse problema, certifique-se de que os conjuntos que compõem a sua aplicação não tenham o mesmo nome de conjunto ou coloque conjuntos com o mesmo nome em diretórios diferentes.
Observação
No .NET Framework, se colocares um assembly fortemente nomeado na cache de assembly global, o nome de ficheiro do assembly deverá corresponder ao nome do assembly, não incluindo a extensão de nome de ficheiro, como .exe ou .dll. Por exemplo, se o nome do ficheiro de um assembly for myAssembly.dll, o nome do assembly deverá ser myAssembly. Os assemblies privados implantados somente no diretório raiz do aplicativo podem ter um nome de assembly diferente do nome do arquivo.