2010-11-03 28 views

Respuesta

60

Estos archivos dan la ruta a la DLL en cuestión para indicarle a Visual Studio dónde encontrarla (puede verificar esto si los abre en un editor de texto). Se crearán cada vez que agregue una nueva referencia al proyecto.

Suelen aparecer cuando se utiliza un tipo de proyecto que no crea un archivo de proyecto de Visual Studio estándar, ya que normalmente las rutas de acceso a los archivos DLL de referencia entraban ahí.

32

De here:

En un proyecto ASP.NET, añadiendo una referencia basada en archivos agregará un archivo .Refresh en la carpeta Bin. Cuando el proyecto está bajo control de fuente, este archivo se agrega al control de fuente. *.dll.refresh archivos que ensucian el directorio bin. Cada vez que agrega una referencia externa, encontrará un archivo dll.refresh justo al lado. Estos archivos dll.refresh son una excepción a la regla y deben pasar al control de código fuente. Es la única forma en que su proyecto web sabrá dónde viven sus referencias.

+5

Parcialmente copiado de http://monsur.xanga.com/437206798/dllrefresh-and-aspnet/ –

+16

Hola SharpUrBrain, parece que acabas de copiar la mayor parte de este contenido del enlace de arriba. ¿Puedes editar tu publicación y atribuirla al autor?El plagio no es bienvenido en Stack Overflow, y siempre es bueno dar crédito donde se debe crédito. ¡Gracias! –

+0

¿El archivo dll al que hace referencia el archivo nuevo tiene que ser en formato .net? ¿Nuevo archivo fresco en C++ DLL? – Gqqnbig

4

Alguna información sobre los archivos de actualización después del ensayo y error. Estos experimentos se realizaron con Visual Studio 2012. Las referencias se agregaron a un proyecto web C# asp.net.

Como se comentó, agregar una referencia a un ensamblado a través de examinar agrega un archivo .refresh. Sin embargo, si hay DLL dependientes adicionales en la DLL añadida explícitamente en el directorio desde el que agrega, los dependientes también se añaden implícitamente, ¡pero sin los archivos .refresh! Entonces, por ejemplo, agrego una referencia a "MyAssembly.dll" y obtendré también "MyAssembly.dll.refresh". Pero si hay un ensamblado "MyDependentAssembly.dll" del que depende "MyAssembly.dll", no obtendré un "MyDependentAssembly.dll.refresh". ¡Entonces, lo que ocurre es que el ensamblaje se actualiza pero no sus dependientes! Debe agregar los archivos DLL uno a la vez en orden inverso de dependencia y luego las cosas funcionarán mejor.

Algunas otras cosas a tener cuidado. Agregar "MyAssembly.dll" también agregará "MyAssembly.pdb" si está presente. También se agregará "MyAssembly.xml" a las referencias si está presente. Esos dos archivos se actualizarán también cuando esté presente "MyAssembly.dll.refresh".

Pero, ¿cuándo decide Visual Studio buscar archivos de actualización? Ahora recuerde, en un proyecto web, el archivo de proyecto no hace un seguimiento específico de las DLL mencionadas. No encontrará las DLL enumeradas en el archivo de proyecto solo en las dependencias del proyecto. Entonces, ¿cuándo ocurre la actualización?

La respuesta a la actualización ocurre durante una compilación cuando se tiene que cargar el ensamblado al que se hace referencia. Eso significa, sin embargo, que la creación de un sitio web actualizable precompilado no puede aprovechar todas las DLL. Seguí teniendo una DLL que no se actualizaba y luego me di cuenta de que se estaba utilizando solo dentro de un archivo .ascx. Desmarcar la casilla de verificación "Permitir que el sitio precompilado sea actualizable" en la página del proyecto MSBuild Options me solucionó ese problema.

Aún si agrega archivos DLL a los que se hace referencia que se cargan mediante reflejo en su código, no se actualizarán a través de una referencia. Tendrá que usar eventos de compilación para copiarlos en el directorio bin.

+0

Creo que cuando dices 'proyecto web' te refieres a 'sitio web'. –