2010-02-08 15 views
12

Estoy un poco confundido acerca de dónde se encuentran físicamente los ensamblados de .NET. Tome el viejo viejo LINQ. En mi archivo web.config que dice:¿Dónde están físicamente ubicados los ensamblados en .NET?

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

Esta es la referencia a LINQ. Pero, ¿dónde está exactamente la DLL a la que se refiere? No hay ningún camino en el anterior y no está en mi carpeta bin.

También tengo lo que creo que es una referencia de ensamblado de terceros:

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

¿Cómo puedo saber donde esta se encuentra en mi máquina si no está en la carpeta bin?

Además, si hay un archivo DLL en el directorio bin, ¿puedo suponer que no necesita referencia en web.config?

Respuesta

11

Creo que se encuentran en el GAC, que se encuentra en %WINDIR%\Assembly. Más información está en Demystifying the .NET Global Assembly Cache (en The Code Project).

+0

El suyo es probable en la URL 'file: /// C:/Windows/Assembly/GAC /' (desearía forzar que sea un enlace) –

+0

¿Qué pasa con MapInfo.CoreTypes, si es un tercero donde lo haría estar ubicado? – Petras

+0

si ha sido registrado con el gac, probablemente esté ubicado allí. ¿No está allí? –

4

El sondeo de ruta de ensamblaje y fusión es bastante complicado. Me gustaría decir que normalmente .NET resolverá un montaje de uno de dos lugares:

  1. O bien se lo encontrará en el directorio local, al igual que el directorio actual, un subdirectorio bin, o en otro lugar especificado por el conjunto de Fusión -lining logic, o

  2. lo encontrará en la tienda global de GAC, donde los ensambles se pueden registrar y buscar por nombre, versión y un par de otros atributos.

Para hacer frente a su pregunta específica sobre el directorio 'bin', si está utilizando ASP.NET (que supongo de su referencia a web.config), entonces sí, no es necesario incluir la ruta - ASP.NET se ocupará de todo lo que necesite hacer para que .NET busque ensamblados en el directorio 'bin'.

2

La respuesta corta es: depende de muchas cosas. El marco tiene su rules para ver cómo carga ensamblajes. Sin embargo, puede anular esto utilizando los diversos archivos de configuración (machine.config, etc.). Para saber dónde viven sus ensamblajes en un sistema en particular, use el Assembly Binding Log Viewer. (Es parte de la plataforma SDK. Simplemente abre un shell de comandos SDK y ejecuta fuslogvw.exe.)

1

Un montaje se puede encontrar sobre todo en cualquiera de los siguientes lugares:

  • GAC - C: \ Windows \ Assembly \ GAC (Microsoft siempre y por terceros en algunos casos)
  • carpeta de instalación (la mayoría de los controles de terceros)

puede obtener la ruta y otra información sobre un ensamblado haciendo clic derecho sobre el conjunto en su proyecto r eferencias y selección de Propiedades.

3

Algunos de los ensamblados de .NET se encuentran en la carpeta de instalación de .Net

Tal como

C: \ Archivos de programa (x86) \ Referencia Asambleas \ Microsoft \ Framework.NETFramework \ v4.0

En el interior están los conjuntos instalados. En .NETFramework un nivel más arriba encontraría las diferentes versiones de .NET y sus ensamblajes correspondientes.

+0

No. Estos son los conjuntos de referencia. Son conjuntos esqueleto, sin implementación real. – k29

Cuestiones relacionadas