2009-05-15 15 views
5

Tengo una aplicación ASP.NET que se basa en un ensamblaje externo que no está en el GAC. La aplicación tiene un archivo .refresh que copia el ensamblaje en el directorio bin cuando se compila la aplicación.¿cómo se actualizan las referencias en las aplicaciones ASP.NET sin Visual Studio?

Cuando instalo la aplicación en un servidor de producción (copiando los archivos de la aplicación en un directorio virtual), el directorio bin no se actualiza automáticamente por la presencia del archivo .refresh como pensé. Intenté utilizar la herramienta aspnet_compiler pero eso no funciona, ya que espera que los ensamblados ya estén en el directorio bin.

¿Cómo obtengo .NET para actualizar el directorio bin de la aplicación sin Visual Studio?

Respuesta

1

Los archivos .Refresh sólo están ahí para que VS sabe que debe mantener un registro de los originales, y si han cambiado, copiar una nueva versión a la carpeta/bin. Solo son archivos de texto con una ruta al original; la fecha de modificación se usa para la comparación.

Cuando dicen:

Cuando instalo la aplicación en un servidor de producción (copiando los archivos de aplicaciones en un directorio virtual), el directorio bin no se actualiza automáticamente.

¿Qué quiere decir exactamente? ¿No está copiando también el contenido del directorio bin al servidor de producción? Tendrá que implementar cualquier ensamblaje dependiente con la aplicación.

+0

No, no estoy copiando el contenido del directorio bin. Supuse que, dado que el ensamblaje al que se hace referencia se instala por separado, también necesitaría instalarse en la máquina de producción y esa instalación se copiaría automáticamente en el directorio bin. Entonces, estoy pensando que esto significa que si también copio el ensamblaje, no tengo que preocuparme de instalarlo en la máquina de producción. solo será parte de la instalación de la aplicación. – Ferruccio

+0

Bueno, para ser honesto, eso depende de lo que haga el instalador: si todo lo que hace es descomprimir algunos archivos (muestras, ayuda y dlls), entonces no, no tendría que instalar la máquina de producción, simplemente copie los archivos DLL a los que se hace referencia . Si hace otras cosas de configuración, entonces deberá asegurarse de que esos pasos se completen en la máquina de producción.Pero, en general, si puede ejecutarlo localmente con el dll en la carpeta bin, entonces debería poder copiarlos a producción. –

0

despejar el directorio de caché de asp.net podría ayudar:

C:\WINDOWS\Microsoft.NET\Framework\ 
FRAMEWORK_VERSION\Temporary ASP.NET Files\YOUR_APP_NAME 
+0

no. no ayuda. – Ferruccio

0

Borre esos archivos .refresh.

hacer un script sencillo de construcción (con lo que quiera cmd de NAnt, Rastrillo, psake ...) que:

  • copia esos archivos a la carpeta de aplicación asp.net
  • acumulación que asp. aplicación de red

O puede editar el archivo .csproj y añadir algo como:

<ProjectExtensions> 
    <PropertyGroup> 
    <PreBuildEvent>copy c:\path\to\dll\files $(ProjectDir)$(OutDir)</PreBuildEvent> 
    </PropertyGroup> 
</ProjectExtensions> 

Esto añadirá una acción de compilación preliminar que copiará los archivos DLL en el directorio de salida de su asp. aplicación de red Tendrás que compilarlo con MsBuild

Cuestiones relacionadas