Assemblies e o cache de assembly global (C#)Assemblies and the Global Assembly Cache (C#)

Os assemblies formam a unidade fundamental de implantação, controle de versão, reutilização, escopo de ativação e permissões de segurança para um aplicativo baseado em .NET Framework.Assemblies form the fundamental unit of deployment, version control, reuse, activation scoping, and security permissions for a .NET-based application. Os assemblies tomam a forma de um arquivo executável (.exe) ou de biblioteca de link dinâmico (.dll) e são os blocos de construção do .NET Framework.Assemblies take the form of an executable (.exe) file or dynamic link library (.dll) file, and are the building blocks of the .NET Framework. Eles oferecem ao Common Language Runtime as informações de que ele precisa para estar ciente das implementações de tipo.They provide the common language runtime with the information it needs to be aware of type implementations. Você pode pensar em um assembly como uma coleção de tipos e recursos que formam uma unidade lógica de funcionalidade e são criados para trabalharem juntos.You can think of an assembly as a collection of types and resources that form a logical unit of functionality and are built to work together.

Os assemblies podem conter um ou mais módulos.Assemblies can contain one or more modules. Por exemplo, projetos maiores podem ser planejados de forma que vários desenvolvedores individuais trabalhem em módulos separados, todos juntos para criar um único assembly.For example, larger projects may be planned in such a way that several individual developers work on separate modules, all coming together to create a single assembly. Para obter mais informações sobre os módulos, consulte o tópico Como compilar um Assembly de vários arquivos.For more information about modules, see the topic How to: Build a Multifile Assembly.

Os assemblies têm as seguintes propriedades:Assemblies have the following properties:

  • Assemblies são implementados como arquivos .dll ou .exe.Assemblies are implemented as .exe or .dll files.

  • Você pode compartilhar um assembly entre aplicativos colocando-o no cache de assembly global.You can share an assembly between applications by putting it in the global assembly cache. Os assemblies devem ter nome forte antes de serem colocados no cache de assembly global.Assemblies must be strong-named before they can be included in the global assembly cache. Para obter mais informações, consulte Assemblies com nome forte.For more information, see Strong-Named Assemblies.

  • Os assemblies serão carregados na memória somente se forem necessários.Assemblies are only loaded into memory if they are required. Se não forem usados, eles não serão carregados.If they are not used, they are not loaded. Isso significa que os assemblies podem ser uma maneira eficiente de gerenciar recursos em projetos grandes.This means that assemblies can be an efficient way to manage resources in larger projects.

  • Você pode obter informações programaticamente sobre um assembly usando reflexão.You can programmatically obtain information about an assembly by using reflection. Para obter mais informações, consulte Reflexão (C#).For more information, see Reflection (C#).

  • Se deseja carregar um assembly somente para inspecioná-lo, use um método como ReflectionOnlyLoadFrom.If you want to load an assembly only to inspect it, use a method such as ReflectionOnlyLoadFrom.

Manifesto de um assemblyAssembly Manifest

Dentro de cada assembly, há um manifesto do assembly.Within every assembly, there is an assembly manifest. Semelhante a um sumário, o manifesto do assembly contém o seguinte:Similar to a table of contents, the assembly manifest contains the following:

  • A identidade do assembly (seu nome e versão).The assembly's identity (its name and version).

  • Uma tabela de arquivo que descreve todos os outros arquivos que compõem o assembly, por exemplo, quaisquer outros assemblies que você criou que seu arquivo .dll ou .exe depende, ou até mesmo arquivos bitmap ou Leiame.A file table describing all the other files that make up the assembly, for example, any other assemblies you created that your .exe or .dll file relies on, or even bitmap or Readme files.

  • Um lista de referências de assembly, que é uma lista de todas as dependências externas, .dlls ou outros arquivos que seu aplicativo precisa e que podem ter sido criados por outra pessoa.An assembly reference list, which is a list of all external dependencies—.dlls or other files your application needs that may have been created by someone else. As referências de assembly contêm referências a objetos globais e privados.Assembly references contain references to both global and private objects. Os objetos globais residem no cache de assembly global, uma área disponível para outros aplicativos.Global objects reside in the global assembly cache, an area available to other applications. Objetos privados devem estar em um diretório no mesmo nível ou abaixo do diretório no qual seu aplicativo está instalado.Private objects must be in a directory at either the same level as or below the directory in which your application is installed.

Como os assemblies contêm informações sobre conteúdo, controle de versão e dependências, os aplicativos criados com o C# não dependem de valores do Registro do Windows para funcionar corretamente.Because assemblies contain information about content, versioning, and dependencies, the applications you create with C# do not rely on Windows registry values to function properly. Os assemblies reduzem conflitos de .dll e tornam seus aplicativos mais confiáveis e mais fáceis de implantar.Assemblies reduce .dll conflicts and make your applications more reliable and easier to deploy. Em muitos casos, você pode instalar um aplicativo baseado em .NET simplesmente copiando seus arquivos para o computador de destino.In many cases, you can install a .NET-based application simply by copying its files to the target computer.

Para obter mais informações, consulte Manifesto do assembly.For more information see Assembly Manifest.

Adicionando uma referência a um assemblyAdding a Reference to an Assembly

Para usar um assembly, você deve adicionar uma referência a ele.To use an assembly, you must add a reference to it. Em seguida, use a diretiva using para escolher o namespace dos itens que você deseja usar.Next, you use the using directive to choose the namespace of the items you want to use. Quando um assembly é referenciado e importado, todas as classes acessíveis, propriedades, métodos e outros membros de seus namespaces estão disponíveis para o seu aplicativo como se seus códigos fossem parte de seu arquivo de origem.Once an assembly is referenced and imported, all the accessible classes, properties, methods, and other members of its namespaces are available to your application as if their code were part of your source file.

No C#, você também pode usar duas versões do mesmo assembly em um único aplicativo.In C#, you can also use two versions of the same assembly in a single application. Para obter mais informações, consulte alias externo.For more information, see extern alias.

Criando um assemblyCreating an Assembly

Compile o aplicativo clicando em Compilar no menu Compilar ou compile da linha de comando usando o compilador de linha de comando.Compile your application by clicking Build on the Build menu or by building it from the command line using the command-line compiler. Para obter detalhes sobre como compilar assemblies da linha de comando, consulte Compilando da linha de comando com csc.exe.For details about building assemblies from the command line, see Command-line Building With csc.exe.

Observação

Para criar um assembly no Visual Studio, no menu Compilar, escolha Compilar.To build an assembly in Visual Studio, on the Build menu choose Build.

Consulte tambémSee Also