visual studio depurar debug deployment visual-studio-2010 asp.net-mvc-2 build-process msdeploy

deployment - depurar - visual studio 2012 debug dll



FunciĆ³n Web de publicaciĆ³n de Visual Studio 2010 que no incluye todas las DLL (13)

Copiar local hizo el truco. Tuve un problema que el ensamblaje Newtonsoft.Json se incluyó en el paquete deploymeny. Copiar local se configuró en falso.

Tengo una aplicación ASP.NET MVC 2.

  • El proyecto web contiene una referencia a SomeProject
  • SomeProject contiene referencias a ExternalAssembly1 y ExternalAssembly2.
  • SomeProject llama explícitamente a ExternalAssembly1, pero NO ExternalAssembly2.
  • ExternalAssembly1 llama a ExternalAssembly2

Cuando realizo una construcción local, todo está bien. Todos los archivos DLL se incluyen en la carpeta bin / debug. El problema es que cuando uso el comando Publicar web en Visual Studio 2010, despliega todo, excepto ExternalAssembly2.

Parece ignorar ensamblajes que no se usan directamente (recuerde, ExternalAssembly2 solo lo usa ExternalAssembly1).

¿Hay alguna manera de decirle a Visual Studio 2010 que incluya ExternalAssembly2?

Puedo escribir un método ficticio que llame a ExternalAssembly2. Esto funciona, pero realmente no quiero tener código ficticio con el único propósito de hacer que VS2010 publique la DLL.



Estoy experimentando el mismo tipo de problema con un proyecto web. Tengo un proyecto web que hace referencia al ensamblaje A que hace referencia al ensamblado B. Funcionó bien durante un tiempo, pero hoy se rompió. Hice una reconstrucción de la solución y esta vez desplegó todo correctamente.


Estoy teniendo el mismo problema (sin embargo, diferentes asambleas). Si hago referencia a los ensamblados en mi proyecto web, se incluirán en el resultado de publicación, pero deben incluirse de todos modos porque son dependencias indirectas:

Proyecto web ---> Montaje A ---> Montaje B

En la compilación, los conjuntos A y B se superan en la carpeta / bin. En publicación, solo el ensamblaje A está superado en la carpeta de publicación.

He intentado cambiar la configuración de publicación para incluir todos los archivos en el proyecto web, pero luego tengo archivos en mi salida de publicación que no deberían implementarse.

Esto me parece un error.



Mis pruebas muestran que los ensamblajes externos se publican cuando tengo una referencia sobre ellos en el proyecto web. No tengo que escribir ningún código ficticio para que funcione. Esto me parece aceptable.

Estoy de acuerdo con Nicholas en que esto parece ser un error en Visual Studio. Al menos me escapa cuál podría ser el motivo del comportamiento.



No sé si todavía está viendo esto, pero encontré la solución (tuve exactamente el mismo problema) a través de este artículo de MSDN . En "crear acción" para el archivo, elija "Contenido" que debe incluirlo en la lista de archivos que publica.


Si ingresa en la lista de propiedades de referencia de ExternalAssembly2 y cambia "Copiar local" a "Verdadero", creo que eso podría resolver su problema.


Tengo el mismo problema y este es un error de VS2010 si hay un enlace de referencia como: proyecto web -> proyecto personalizado -> ensamblado1 -> (indirectamente) ensamblado2.

Por ahora, me parece que si hago referencia a Assembly1 en el proyecto web, entonces assembly2 se incluye en la carpeta bin. Así que tuve que agregar un enlace de referencia adicional como: Proyecto web -> assembly1 -> (indirectamente) assembly2. Entonces VS puede reconocer assembly2 e incluir su archivo dll en acción de publicación.


Tuve el mismo problema con VS2010 y una aplicación de servicio WCF.

Resulta que si su DLL (directa o indirectamente) referenciada se implementa en GAC, la característica de publicación de VS lo excluye. Una vez que eliminé los ensamblados de GAC, la función de publicación comenzó a funcionar como se esperaba.

Supongo que VS está asumiendo que si sus ensamblajes pueden ubicarse en GAC en la máquina que construye, también se ubicarán en GAC en la máquina objetivo. Al menos en mi caso, esta suposición es falsa.


Tuve el mismo problema hoy. Publiqué mi proyecto web y me di cuenta de que no todas las DLL de referencia estaban allí. En particular, las referencias DLL indirectas.

Resulta que el directorio en el que estaba publicando estaba fuera de espacio en disco (recurso compartido de red). Tenía el espacio suficiente para publicar todos los archivos, a excepción de algunos DLL indirectos de referencia. La parte triste es que VS08 no arrojó ningún error. Acaba de publicar que los archivos son habituales. Limpié un poco del espacio de HDD y todo funcionó bien.

No encontré el problema de espacio en el HDD hasta que traté de mover manualmente el archivo DLL.


en mi caso, es bastante complicado. La referencia a ExternalAssembly2 no es necesaria para construir el proyecto, pero es vital para el tiempo de ejecución ya que usamos la reflexión para configurar el contenedor de Unity. Por lo tanto, borro la referencia: construyo el proyecto con éxito, pero obtengo un error en tiempo de ejecución. Si conservo la referencia, puedo compilar y ejecutar la aplicación pero no puedo publicarla con ExternalAssembly2; también obtengo una excepción de tiempo de ejecución. Esto sucede debido a la optimización interna de ensambles VS2010.

Entonces, ¿qué podemos hacer aquí? 1. Ponga un poco de código de pieza no requerido para usar cualquier clase de ExternalAssembly2. 2. escapar de la reflexión y usar enlaces de conjuntos estáticos.

Espero que esto ayude a smbd.