Pregunta

Quiero actualizar una biblioteca de clases (un solo archivo DLL) en una aplicación Web de producción. Se pre-compilados esta aplicación web (publicado). Leí una respuesta en StackOverflow (lo siento, parece que no puede encontrar más porque la función de búsqueda no funciona muy bien), que me llevó a creer que solo pude pegar el nuevo archivo DLL en la carpeta bin y que sería recogido sin problemas (esto haría que el WP para reciclar, lo cual está bien conmigo porque no usamos InProc estado de sesión).

Sin embargo, cuando he intentado esto, mi sitio explota y da una FileLoadException diciendo que la definición manifiesto del ensamblado no coincide con la referencia de ensamblado. Lo que en el mundo es esto ?! Actualizar el archivo DLL en Visual Studio y volver a desplegar todo el sitio funciona bien, pero es un gran dolor en el trasero. ¿Cuál es el punto de tener una DLL independiente si tiene que volver a desplegar todo el sitio para implementar cualquier cambio?

Aquí está la pregunta: ¿Cómo puedo actualizar una DLL en un sitio Web de producción sin romper la aplicación y sin volver a desplegar todos los archivos?

¿Fue útil?

Solución

Lo que hay que recordar es que hay sitios web y aplicaciones web por lo que Visual Studio y se considera ASPNET.

Sitios Web suelen tener todos los archivos aspx y VB publicados en el servidor en vivo y proceso de trabajo ASPNET vuelve a compilar la aplicación cada vez que antes de la presentación.

En el otro extremo es la aplicación web, donde todo el código detrás de los archivos se compilan a un solo archivo DLL y sólo tiene que desplegar sus páginas aspx y que la carpeta del compartimiento con el archivo DLL a la producción.

También hay un "híbrido", conocido como " Sitios web Precompiled "(ver el enlace de la web oficial de la MSDN) en el que no tiene la disposición única DLL de una aplicación web, pero todo el trabajo de compilación de la página web está hecho para usted. Hay varios "modos" a esta función de sus necesidades.

Me parece que su error es causado debido a que su sitio está configurado como un sitio web con una especie de compilación previa en su lugar. Usando el modelo de pre-compilados está un poco más "estricta" en que es asume ciertos archivos / firmas están en su lugar. Tener una versión actualizada del archivo DLL provoca una ruptura ya que la compilación previa quiere un nombre y una versión del archivo.

Si es posible, lo mejor sería convertir a una aplicación web, ya que se puede añadir los archivos DLL adicionales en producción sin ningún problema. De lo contrario, echar un vistazo a esta matriz para ver qué tipo de compilación previa que necesita para su aplicación.

Otros consejos

Tener un vistazo a su referencia. Por qué dice "versión específica = true"? Definirla con false, volver a publicar su aplicación (hay que hacerlo una vez, porque ahora su aplicación todavía está buscando un conjunto con un manifiesto específica) e intentarlo de nuevo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top