2009-06-05 11 views
6

Tengo un par de ensamblados .NET, misma versión, el mismo nombre de archivo, pero se encuentra en una ubicación diferente:La Orden de asambleas que se está cargando

  1. carpeta Programa
  2. C: \ Windows
  3. C: \ Windows \ system32
  4. GAC

Ahora, el que se cargará primera asamblea de ubicación?

Respuesta

4

.Net tiene diferentes asambleas orden de búsqueda de ventanas regulares .dll. Se comprobará GAC lo primero SOLAMENTE si el ensamblado tiene un fuerte nombre firmado. Si el conjunto no está en la GAC ​​/ no nombre seguro firmado, la carpeta local se comprueba después de eso. Este es el final de la orden de búsqueda de ensamblado de .NET, 1,2 y 3 anteriores no se comprueban.

puede cambiar en el que se ve .net para el montaje por tener un archivo de configuración local para usted aplicación.

Además, this post in the microsoft.public.dotnet.framework.aspnet group contienen información muy útil.

+1

Puede valer la pena actualizar esto con la búsqueda 'ProbingPath' – GETah

+0

" fuertemente nombrado firmado "¿Quiere decir con mucho nombre Y firmado? – user145400

0

C: \ Windows y C: \ Windows \ System32 no son de relevancia para el conjunto de ensayo administrado. El marco no buscará asambleas allí.

se ve por primera vez en la GAC/Application Folder y luego en carpetas apuntada por la configuración codebase/privatepath si se especifica en el archivo app.config. (Solo se pueden ubicar ensamblajes de nombre seguro en el GAC). Al probar comprueba varias combinaciones al agregar .dll o .exe, buscando en las carpetas llamadas assembly.exe/.dll, buscando ensamblados para culturas específicas si es necesario .

Una buena herramienta para ver qué carpetas comprobó el tiempo de ejecución para las fallas de resolución de ensamblaje es Fusion Log Viewer. Ingrese 'fuslogvw' en el indicador de comando VS. Muestra entradas introducidas por Nombre de aplicación y Nombre

Cuestiones relacionadas