Pergunta

Quero exportar as assembléias incorporadas no meu projeto. Mas onde eles estão fisicamente armazenados?

Foi útil?

Solução

Na verdade, encontrei este post, depois que escrevi minha pergunta. É muito bom explicado:

Você poderá vê -los se você navegar para

c:\windows\assembly

Com o Explorer, onde você verá uma lista bem formatada de montagens.
A extensão do shell responsável por essa visão mostra não apenas montagens no GAC, mas também as versões nativas dos assemblies pré-compilados com ngen.exe.
Mas os arquivos não são realmente armazenados aqui - a extensão do shell simplesmente mascara sua verdadeira localização. Você pode ver onde os arquivos são realmente armazenados navegando no mesmo diretório por meio de um prompt de comando.
Neste local, existem vários subdiretos, incluindo um chamado GAC. Enterrado aqui sob várias camadas de códigos de hash e nomes de montagem reside os conjuntos físicos, juntamente com um arquivo .ini antiquado que contém o nome forte, entre outras coisas. Vale a pena explorar neste território desconhecido apenas para entender o que está acontecendo sob as cobertas, embora tenha cuidado para fazer alterações, pois o GAC deve ser opaco.

Outras dicas

Eles são armazenados em % Systemroot % em uma pasta nomeada conjunto

A variável % Systemroot % é uma variável de ambiente especial em todo o sistema encontrada no Microsoft Windows NT e seus derivados. Seu valor é a localização da pasta do sistema, incluindo a unidade e o caminho.

A unidade é a mesma que % SystemDrive % e o caminho padrão em uma instalação limpa depende da versão do sistema operacional. Por padrão, em uma instalação limpa:

* Windows NT 5.1 (Windows XP) and newer versions use \WINDOWS
* Windows NT 5.0 (Windows 2000), Windows NT 4.0 and Windows NT 3.1 use \WINNT
* Windows NT 3.5x uses \WINNT35

(da Wikipedia)

A localização física do GAC é o diretório de montagem sob %Windir %, Fe

c:\windows\assembly

Você pode copiar montagens para o GAC com o Explorer, ou o programa Gacutil.

Não, os conjuntos fisicamente são armazenados não em "C: Windows Assembly". Somente as referências às assembléias são armazenadas lá. Por exemplo, a montagem "system.windows.forms.dll" (assim como a maior parte das montagens da estrutura .NET) é fisicamente armazenada em "c: windows winsxs" em muitas edições, otimizadas para muitas plataformas (apenas vá para " C: Windows winsxs "em Explorer e Type" System.windows.forms.dll "na caixa de pesquisa). Por exemplo, você pode criar uma assembléia fortemente nomeada, registrá -la no GAC, mas é a localização física onde você coloca o arquivo de montagem. (Por exemplo, "C: Usuários %Nome de usuário% Documents Visual Studio 2008 Projects YourAssEmblyProjectName YourAssEmblyProjectName bin Debug" - vs Projetos Diretório Padrão). Além disso, no GAC são apenas referências a montagens são armazenadas; portanto, se você reconstruir sua Assembléia que está registrado no GAC, os assembléias que estão usando sua assembléia, referenciando -o do GAC, também usará uma verion reconstruída da sua assembléia.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top