Registre vários assemblies no GAC no Vista
Pergunta
Eu tenho um diretório inteiro de DLLs que preciso registrar no GAC.Eu gostaria de evitar registrar cada arquivo explicitamente - mas parece que o gacutil não tem a opção "registrar diretório".Alguém tem uma solução rápida/simples?
Solução
GACUTIL não registra DLLs – não no sentido “COM”.Ao contrário do COM, o GACUTIL copia o arquivo para um diretório opaco em %SYSTEMROOT%\assembly e é de lá que eles são executados.Não faria sentido pedir ao GACUTIL "registrar uma pasta" (não que você também possa fazer isso com o RegSvr32).
Você pode usar um comando FOR em lote, como:
FOR %a IN (C:\MyFolderWithAssemblies\*.dll) DO GACUTIL /i %a
Se você colocar isso em um arquivo em lote, deverá substituir %a por %%a
Outras dicas
Aqui está o script que você colocaria em um arquivo em lote para registrar todos os arquivos no diretório atual com Gacutil.Você não precisa colocá-lo em um arquivo em lote (basta copiar/colar em um prompt de comando) para fazer isso.
FOR %1 IN (*) DO Gacutil /i %1
Editar:Bah, desculpe, eu estava atrasado.Não vi o post anterior quando postei o meu.
Usar
gacutil /il YourPathTo_A_TextFile.txt
switch, se você tiver DLLs em várias pastas diferentes.Caso contrário, vá com o for ... in
loop mencionado pelo Euro.
O arquivo de texto deve conter uma lista de caminhos de montagem (um caminho por linha) que devem ser instalados.Os caminhos também podem ser pastas diferentes em todo o sistema.Execute a linha de comando como administrador!
Aqui está um exemplo de YourPathTo_A_TextFile.txt:
C: ... microsoft.practices.enterpriselibrary.common.dll c: ... microsoft.practices.enterpriselibrary.configuration.design.hostadapter.dll c: ... microsoft.practices.enterpractice Hostadapterv5.dll c: ... microsoft.practices.enterpriselibrary.configuration.designtime.dll c: ... microsoft.practices.enterpriselibrary.configuration.EnvirprisElOverrides.dll c: ... .dll