Pergunta

Estou um pouco confuso sobre onde NET assembléias estão localizados fisicamente. Tome bom LINQ . No meu arquivo web.config diz:

<add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

Esta é a referência para LINQ. Mas onde exatamente é a DLL isto se refere à localizados? Não há qualquer caminho no exemplo acima e não é na minha pasta bin.

Eu também tenho o que eu acho que é uma referência de montagem de terceiros:

<add assembly="MapInfo.CoreTypes, Version=4.0.0.483, Culture=neutral, PublicKeyToken=F548BCBA69D4B8DA" />

Como posso saber onde isso está localizado na minha máquina, se não é na pasta bin?

Além disso, se um arquivo DLL está no diretório bin, posso supor que ele não precisa de ser referenciado em web.config?

Foi útil?

Solução

assembléias

terceiro partido pode não ser no GAC , consulte o artigo MSDN como o runtime localiza assemblies para o conjunto de regras . Ou, tente o SysInternals FILEMON .

Outras dicas

Eu acho que eles estão localizados na GAC , que está localizado em %WINDIR%\Assembly. Mais informações estão no Desmistificando o .NET global assembly cache (em O Code Project).

Assembleia e caminho Fusão sondagem é muito complicado. Posso dizer que normalmente .NET vai resolver um conjunto de um dos dois lugares:

  1. Ou ele vai encontrá-lo no diretório local, como o diretório atual, um subdiretório bin, ou outro local especificado pela lógica de montagem de ligação Fusion, ou

  2. ele vai encontrá-lo na loja GAC ??global, onde os conjuntos podem ser registrados e olhou pelo nome, versão, e um par de outros atributos.

Para resolver a sua pergunta específica sobre o diretório 'bin', se você estiver usando ASP.NET (que eu suponho que a partir de sua referência a web.config), então sim, você não precisa incluir o caminho - ASP.NET vai cuidar de tudo o que ele precisa fazer a fim de fazer .NET olhar para montagens no diretório 'bin'.

Alguns dos conjuntos .NET estão localizados na pasta de instalação do .Net

como

C: \ Program Files (x86) \ Reference Assembléias \ Microsoft \ Framework.NETFramework \ v4.0

No interior existem as assembleias de estar. Na um nível .NETFramework se você iria encontrar as diferentes versões do .NET e suas assembléias correspondentes.

A resposta curta é: depende de um monte de coisas. O quadro tem suas regras de como ele carrega assembléias. No entanto, você pode substituir isso usando os vários arquivos de configuração (Machine.config, etc). Para descobrir onde suas montagens realmente vivo em um sistema específico, use o Log Assembléia Binding visualizador . (É parte da plataforma SDK. Basta abrir um shell de comando SDK e Fuslogvw.exe executado.)

Um conjunto pode ser encontrada principalmente em um dos seguintes locais:

  • GAC - C: \ Windows \ Assembly \ GAC (Microsoft fornecido e por terceiros, de alguma casos)
  • pasta de instalação (a maior parte do controles de terceiros)

Você pode obter o caminho e outras informações sobre uma reunião com o botão direito na montagem de suas referências projeto e selecionando Propriedades .

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