Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Assemblies são as unidades fundamentais de implantação, controle de versão, reutilização, escopo de ativação e permissões de segurança para aplicativos baseados em .NET. Um assembly é uma coleção de tipos e recursos criados para trabalhar em conjunto e formar uma unidade lógica de funcionalidade. Os assemblies assumem a forma de arquivos executáveis (.exe) ou biblioteca de links dinâmicos (.dll) e são os blocos de construção de aplicativos .NET. Eles fornecem ao common language runtime as informações que ele precisa para estar ciente das implementações de tipo.
No .NET e no .NET Framework, você pode criar um assembly de um ou mais arquivos de código-fonte. No .NET Framework, os assemblies podem conter um ou mais módulos. Dessa forma, projetos maiores podem ser planejados para que vários desenvolvedores possam trabalhar em arquivos ou módulos de código-fonte separados, que são combinados para criar um único assembly. Para obter mais informações sobre módulos, consulte Como criar um assembly de vários arquivos.
As assembléias têm as seguintes propriedades:
Os assemblies são implementados como arquivos .exe ou .dll.
Para bibliotecas direcionadas ao .NET Framework, você pode compartilhar assemblies entre aplicativos colocando-os no GAC (cache de assembly global). É necessário dar nomes fortes aos assemblies antes de incluí-los no GAC. Para obter mais informações, consulte assemblies com nome forte.
Os assemblies serão carregados na memória somente se forem necessários. Se não forem usados, eles não serão carregados. Portando, os assemblies podem ser uma maneira eficiente de gerenciar recursos em projetos grandes.
Você pode obter informações programaticamente sobre um assembly usando reflexão. Para obter mais informações, consulte Reflexão (C#) ou Reflexão (Visual Basic).
Você pode carregar um assembly apenas para inspecioná-lo usando a MetadataLoadContext classe no .NET e no .NET Framework. MetadataLoadContext substitui os Assembly.ReflectionOnlyLoad métodos.
Assemblies no Common Language Runtime
Os assemblies fornecem ao Common Language Runtime as informações necessárias para reconhecer as implementações de tipo. Para o runtime, um tipo não existe fora do contexto de uma assemblagem.
Um assembly define as seguintes informações:
Código que o ambiente de execução comum (CLR) executa. Cada assembly pode ter apenas um ponto de entrada:
DllMain,WinMainouMain.O limite de segurança. Um assembly é a unidade na qual as permissões são solicitadas e concedidas. Para obter mais informações sobre limites de segurança em assemblies, consulte as considerações de segurança de assemblies.
O limite de tipo. A identidade de cada tipo inclui o nome do assembly no qual ele reside. Um tipo chamado
MyTypecarregado no escopo de um assembly não é o mesmo que um tipo chamadoMyTypecarregado no escopo de outro assembly.O limite de escopo de referência: o manifesto do assembly tem metadados usados para resolver tipos e atender solicitações de recursos. O manifesto especifica os tipos e recursos a serem expostos fora do assembly e enumera outros assemblies dos quais ele depende. O código CIL (linguagem intermediária comum) em um arquivo PE (executável portátil) não será executado, a menos que tenha um manifesto de assembly associado.
O limite de versão. O assembly é a menor unidade de versão no Common Language Runtime. Todos os tipos e recursos em uma mesma assemblagem são versionados como uma unidade. O manifesto da montagem descreve as dependências de versão que você especifica para quaisquer assemblies dependentes. Para obter mais informações sobre controle de versão, consulte o controle de versão do Assembly.
A unidade de implantação: quando um aplicativo é iniciado, somente os assemblies que o aplicativo chama inicialmente devem estar presentes. Outros assemblies, como os que contêm recursos de localização ou classes de utilitários, podem ser recuperados sob demanda. Esse processo permite que os aplicativos sejam simples e finos quando baixados pela primeira vez. Para obter mais informações sobre como implantar assemblies, consulte Implantar aplicativos.
Uma unidade de execução lado a lado: para obter mais informações sobre como executar várias versões de um assembly, consulte Assemblies e execução lado a lado.
Criar um assembly
Assemblies podem ser estáticos ou dinâmicos. Assemblies estáticos são armazenados em um disco em arquivos PE. Os assemblies estáticos podem incluir interfaces, classes e recursos como bitmaps, arquivos JPEG e outros arquivos de recursos. Você também pode criar assemblies dinâmicos, que são executados diretamente da memória e não são salvos em disco antes da execução. Você pode salvar conjuntos dinâmicos em disco depois que eles forem executados.
Há várias maneiras de criar conjuntos. Você pode usar ferramentas de desenvolvimento, como o Visual Studio, que podem criar arquivos.dll ou .exe . Você pode usar ferramentas no SDK do Windows para criar assemblies com módulos de outros ambientes de desenvolvimento. Você também pode usar APIs do Common Language Runtime, como System.Reflection.Emit, a fim de criar assemblies dinâmicos.
Compile assemblies criando-os no Visual Studio, criando-os com ferramentas de interface de linha de comando do .NET Core ou criando assemblies do .NET Framework com um compilador de linha de comando. Para obter mais informações sobre como criar assemblies usando a CLI do .NET, consulte a visão geral da CLI do .NET.
Observação
Para criar um assembly no Visual Studio, no menu Compilar , selecione Compilar.
Manifesto do assembly
Cada assembly tem um arquivo de manifesto de assembly. Semelhante a um índice, o manifesto do assembly contém o seguinte:
A identidade do assembly (seu nome e versão).
Uma tabela que descreve todos os outros arquivos que compõem o assembly, como outros assemblies que você criou e dos quais o arquivo .exe ou .dll depende, arquivos bitmap ou arquivos leia-me.
Uma lista de referências de assembly, que é uma lista de todas as dependências externas, como .dlls ou outros arquivos. As referências de assembly contêm referências a objetos globais e privados. Objetos globais estão disponíveis para todos os outros aplicativos. No .NET Core, os objetos globais são associados a um runtime específico do .NET Core. No .NET Framework, os objetos globais residem no GAC (cache de assembly global). System.IO.dll é um exemplo de um assembly no GAC. Os objetos privados devem estar em um nível de diretório igual ou abaixo do diretório no qual seu aplicativo está instalado.
Os assemblies contêm informações sobre conteúdo, controle de versão e dependências. Portanto, os aplicativos que os usam não precisam depender de fontes externas, como o Registro em sistemas Windows, para funcionar corretamente. Os assemblies reduzem os conflitos de .dll e tornam seus aplicativos mais confiáveis e fáceis de implantar. Em muitos casos, você pode instalar um aplicativo baseado em .NET basta copiar os arquivos para o computador de destino. Para obter mais informações, consulte o manifesto do Assembly.
Adicionar uma referência a um assembly
Para usar um assembly em um aplicativo, você deve adicionar uma referência a ele. Quando um assembly é referenciado, todos os tipos acessíveis, propriedades, métodos e outros membros de seus namespaces estão disponíveis para seu aplicativo como se o código fosse parte do arquivo de origem.
Observação
A maioria dos assemblies da Biblioteca de Classes .NET é referenciada automaticamente. Se uma montagem do sistema não for referenciada automaticamente, adicione uma referência das seguintes formas:
- Para .NET e .NET Core, adicione uma referência ao pacote NuGet que contém a biblioteca. Use o Gerenciador de Pacotes NuGet no Visual Studio ou adicione um <elemento PackageReference> para o assembly ao projeto .csproj ou .vbproj .
- Para o .NET Framework, adicione uma referência ao assembly usando a caixa de diálogo Adicionar Referência no Visual Studio ou a opção
-referencede linha de comando para os compiladores C# ou Visual Basic .
No C#, você pode usar duas versões do mesmo assembly em um único aplicativo. Para obter mais informações, consulte extern alias.
Conteúdo relacionado
| Título | Descrição |
|---|---|
| Conteúdos do assembly | Elementos que compõem um conjunto. |
| Manifesto do assembly | Dados no manifesto do assembly e como eles são armazenados nos assemblies. |
| Cache de Assemblia Global | Como o GAC armazena e usa assemblies. |
| Assemblies com nome forte | Características de assemblies com nomes fortes. |
| Considerações sobre a segurança do assembly | Como a segurança funciona com assemblies. |
| Controle de versão de montagem | Visão geral da política de controle de versão do .NET Framework. |
| Posicionamento de montagem | Onde localizar assemblies. |
| Assemblies e execução lado a lado | Use diversas versões do runtime ou um assembly simultaneamente. |
| Emissão de métodos e assemblies dinâmicos | Como criar conjuntos dinâmicos. |
| Como o runtime localiza conjuntos | Como o .NET Framework resolve referências de assembly em tempo de execução. |
Referência
Consulte também
- Formato de arquivo de assemblagem do .NET
- Assemblies de amizade
- Assemblies de referência
- Como carregar e descarregar assemblies
- Como usar e depurar a incapacidade de carregamento de assembly no .NET Core
- Como determinar se um arquivo é um assembly
- Como inspecionar o conteúdo do assembly usando MetadataLoadContext