Usar o Visual C# para instalar um assembly no Cache de Assembly Global
Este artigo fornece informações sobre como instalar um assembly no Cache de Assembly Global no Visual C#.
Versão original do produto: Visual C#
Número de KB original: 815808
Resumo
Este artigo descreve como gerar um nome forte para um assembly e como instalar um arquivo .dll no GAC (Cache de Assembly Global). Com o GAC, você pode compartilhar assemblies em muitos aplicativos. O GAC é instalado automaticamente com o runtime do .NET. Os componentes normalmente são armazenados em C:\WINNT\Assembly
.
Para instalar um assembly no GAC, você deve dar ao assembly um nome forte. O nome é uma hash-key criptográfica ou uma assinatura. Esse nome forte garante a versão correta do componente. Isso ajuda a evitar que componentes com o mesmo nome entrem em conflito entre si ou sejam usados incorretamente por um aplicativo consumidor.
Requisitos
- Direitos do administrador para o computador em que o assembly compartilhado está sendo instalado
- Familiaridade geral com assemblies no .NET.
- Familiaridade geral com o uso de ferramentas no prompt de comando.
Global Assembly Cache
Para criar um pequeno projeto da Biblioteca de Classes usando o Visual Studio, para gerar um nome forte e instalar o arquivo .dll do projeto no GAC, siga estas etapas:
No Visual Studio, crie um novo projeto da Biblioteca de Classes do Visual C# e nomeie o projeto GACDemo.
Você deve usar um nome forte. Para gerar esse par de chaves criptográficas, use a ferramenta Nome Forte (Sn.exe). Essa ferramenta está localizada no subdiretório em
\bin
que o SDK (Kit de Desenvolvedor de Soluções) .NET Framework está instalado. A ferramenta Sn.exe é fácil de usar. A instrução de linha de comando usa o seguintesn -k "[DriveLetter]:\[DirectoryToPlaceKey]\[KeyName].snk"
Observação
No Visual Studio, você pode usar as propriedades do projeto IDE para gerar um par de chaves e assinar o assembly. Em seguida, você pode ignorar a etapa 3 e a etapa 4 e também ignorar a alteração de código no arquivo AssemblyInfo.cs .
Para usar as propriedades do projeto IDE para gerar um par de chaves e assinar o assembly, siga estas etapas:
Em Gerenciador de Soluções, clique com o botão direito do mouse em GACDemo e clique em Propriedades.
Clique na guia Assinar e clique para selecionar a caixa Assinar o assembly marcar.
Na lista Escolher uma chave de nome forte , clique em <Novo...>.
Digite GACkey.snk como o nome do arquivo de chave, desmarque o arquivo Proteger minha chave com uma senha marcar caixa e clique em OK.
Pressione o atalho de teclado CTRL+SHIFT+B para compilar o projeto.
Depois de seguir estas etapas, você ainda deve seguir a etapa 5 para instalar o assembly no GAC.
Crie um diretório chamado GACKey no
C:\
para que você possa localizar facilmente a chave e acessar a chave no prompt de comando.Para a maioria dos usuários, as ferramentas .NET estão localizadas em
C:\Program Files\Microsoft.NET\FrameworkSDK\Bin
. Antes de digitar o comando a seguir, talvez você queira copiar esse caminho semelhante em seu computador para o diretório do .NET bin. Digitecd
no prompt de comando, clique com o botão direito do mouse para colar o caminho e pressione ENTER para alterar rapidamente para o diretório em que a Ferramenta SN está localizada.Digite o seguinte comando:
sn -k "C:\GACKey\GACkey.snk"
Uma chave é gerada, mas ainda não está associada ao assembly do projeto. Para criar essa associação, clique duas vezes no arquivo AssemblyInfo.cs no Visual Studio .NET Gerenciador de Soluções. Esse arquivo tem a lista de atributos de assembly que são incluídos por padrão quando um projeto é criado no Visual Studio .NET. Modifique o
AssemblyKeyFile
atributo assembly no código da seguinte maneira:[assembly: AssemblyKeyFile('C:\\GACKey\\GACKey.snk') ]
Compile o projeto pressionando CTRL+SHIFT+B. Você não precisa ter nenhum código adicional para instalar um arquivo .dll no GAC.
Você pode instalar o arquivo .dll usando a ferramenta Gacutil ou arrastando o arquivo .dll para a pasta apropriada. Se você usar a ferramenta Gacutil, poderá usar um comando que se assemelha ao seguinte:
gacutil -I "[DriveLetter]:\[PathToBinDirectoryInVSProject]\gac.dll"
Para arrastar o arquivo, abra duas instâncias do Windows Explorer. Em uma instância, localize a saída do arquivo .dll para o projeto do console. Na outra instância, localize
c:\<SystemRoot>\Assembly
. Em seguida, arraste seu arquivo .dll para a pasta Assembly.
Listagem de código completa (AssemblyInfo.cs)
using System.Reflection;
using System.Runtime.CompilerServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// that is associated with an assembly.
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Version information for an assembly is made up of the following four values:
// Major Version
// Minor Version
// Build Number
// Revision
// You can specify all the values, or you can default the revision and build numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.*")]
// To sign your assembly you must specify a key to use. See the
// Microsoft .NET Framework documentation for more information about assembly signing.
// Use the following attributes to control that key is used for signing.
// Notes:
// (*) If no key is specified, the assembly is not signed.
// (*) KeyName refers to a key that has been installed in the Crypto Service
// Provider (CSP) on your computer. KeyFile refers to a file that contains
// a key.
// (*) If the KeyFile and the KeyName values are both specified, the
// following processing occurs:
// (1) If the KeyName can be found in the CSP, that key is used.
// (2) If the KeyName does not exist and the KeyFile does exist, the key
// in the KeyFile is installed to the CSP and used.
// (*) To create a KeyFile, you can use the sn.exe (Strong Name) utility.
// When specifying the KeyFile, the location of the KeyFile must be
// relative to the project output directory which is
// %Project Directory%\obj\<configuration>. For example, if your KeyFile is
// located in the project directory, you would specify the AssemblyKeyFile
// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]
// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework
// documentation for more information about this.
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("C:\\GACKey\\GACKey.snk")]
[assembly: AssemblyKeyName("")]
Verificação
- Inicie o Windows Explorer.
- Localize
C:\SystemRoot\assembly
. - Você vê GACDemo na lista de arquivos .dll instalados.
Referências
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários