Pregunta

Tengo una aplicación ASP.NET MVC 2.

  • proyecto Web contiene una referencia a SomeProject
  • SomeProject contiene referencias a ExternalAssembly1 y ExternalAssembly2.
  • SomeProject llama explícitamente en ExternalAssembly1, pero NO ExternalAssembly2.
  • ExternalAssembly1 pone en ExternalAssembly2

Al realizar una acumulación local de todo es fresco. Todos los archivos DLL se incluyen en la carpeta de depuración bin \. El problema es que cuando se utiliza el comando Publicar Web en Visual Studio 2010, que despliega todo excepto ExternalAssembly2.

Parece ignorar conjuntos que no se utilizan directamente (recuerda, ExternalAssembly2 sólo se utiliza por ExternalAssembly1).

¿Hay alguna manera de indicar a Visual Studio 2010 para incluir ExternalAssembly2?

Puedo escribir un método ficticio que pone en ExternalAssembly2. Esto funciona, pero realmente no quiere tener código ficticio con el único propósito de causar VS2010 para publicar el archivo DLL.

¿Fue útil?

Solución

Ninguna de estas respuestas son suficientes en mi mente. Esto parece ser un error genuino. Voy a actualizar esta respuesta si alguna vez encuentro una solución no hack, o Microsoft corrige el error.

Actualización:

¿El no parece prometedor. https://connect.microsoft .com / VisualStudio / feedback / detalles / 731303 / publicar en web-función-no-incluidos-all-dlls

Otros consejos

Estoy teniendo el mismo problema (diferentes asambleas, aunque). Si me refiero a las asambleas en mi proyecto web, entonces van a quedar incluidos en la salida de publicar, pero deben ser incluidos todos modos, ya que son dependencias indirectas:

Proyecto Web ---> Asamblea A ---> Asamblea B

En construcción, los conjuntos A y B están outputed a la carpeta \ bin. Por publicar, única asamblea A se outputed a la carpeta de publicar.

He intentado cambiar la configuración de publicación para incluir todos los archivos en el proyecto web, pero luego tienen archivos en mi salida de publicar que no deben ser desplegadas.

Esto parece un error para mí.

Yo tenía el mismo problema con VS2010 y una aplicación de servicio de WCF.

Resulta que si sus DLL (directa o indirectamente) referenciados se despliegan a GAC, el VS característica de publicación excluye ellos. Una vez me quita los ensamblados de GAC, característica de publicación comenzó a trabajar como se esperaba.

supongo VS está asumiendo que si sus montajes pueden estar ubicados en GAC en la máquina que construye, que se ubicarán en el GAC en el equipo de destino también. Por lo menos en mi caso esta hipótesis es falsa.

Mis pruebas muestran que los montajes externos ser publicado cuando tengo una referencia de ellos en el proyecto web. No tengo que escribir ningún código ficticio para que funcione. Esto parece aceptable para mí.

Estoy de acuerdo con Nicholas que esto parece ser un error en Visual Studio. Al menos se me escapa lo que podría ser la razón de la conducta.

He creado este problema como un error en Microsoft Connect. Si alguien lo experimenta podría votar hasta https://connect.microsoft.com/VisualStudio/feedback/details/637071/publish-web-feature-not-including-all-dlls entonces espero que vamos a hacer algo al respecto.

Si usted entra en la lista de propiedades referencia ExternalAssembly2 y cambiar la "copia local" a "True" Creo que podría resolver su problema.

No sé si estás viendo esto todavía pero he encontrado la solución (que tenía exactamente el mismo tema) a través de este artículo de MSDN . En "Acción de generación" para elegir el archivo "contenido" que debe incluirlo en la lista de archivos publicar aporta más.

He creado un nuevo error se conectan aquí https://connect.microsoft.com/VisualStudio/feedback/details/731303/publish-web-feature-not-including-all-dlls

También he adjuntado una solución y los pasos para reproducir este problema se detalla. Esperemos que esta vez no se cerrará como Can not reproduce.

Vote en este tema de conexión Si experimenta el problema DLL faltante.

copia local hizo el truco. Tuve un problema que el ensamblaje Newtonsoft.Json sean incluidos en el paquete deploymeny. Copia local se establece en false.

Estoy experimentando el mismo tipo de problema con un proyecto web. Tengo un proyecto Web que hace referencia el montaje A que las referencias de montaje B. funcionó bien durante algún tiempo pero hoy en día se rompió. Yo una reconstrucción de la solución y esta vez desplegado todo correctamente.

Tuve este mismo problema hoy en día. Publiqué mi proyecto web y se dio cuenta que no todos la referencia DLL estaban allí. En particular, las referencias DLL indirecta.

Resulta que el directorio en el que publicaba a estaba fuera de espacio en disco (recurso compartido de red). Tenía suficiente espacio para publicar todos los archivos a excepción de algunos de DLL referencia indirecta. La parte triste es que VS08 no lanzó ningún error. Se acaba de publicar los archivos son habituales. Limpié un poco de espacio de disco duro y todo funcionaba bien.

no he encontrado el problema de espacio de disco duro hasta que intentara mover manualmente sobre de la DLL.

en mi caso, es bastante complicado. No se requiere referencia a ExternalAssembly2 para construir el proyecto, pero vital para el tiempo de ejecución ya que utilizamos la reflexión a la Unidad contenedor de configuración. Por lo tanto, suprimir la referencia - construir el proyecto con éxito, pero da error en tiempo de ejecución. Si conservo la referencia que puede crear y ejecutar la aplicación, pero no puedo publicar con ExternalAssembly2 - obtener una excepción en tiempo de ejecución así. Esto se sucede debido asambleas VS2010 interna optimización.

Por lo tanto, lo que se puede hacer aquí? 1. Ponga un poco pedazo unrequired de código para utilizar cualquier clase de ExternalAssembly2. 2. escape de conjuntos de reflexión y el uso estáticas vinculación.

Espero que esto ayude a smbd.

Tengo el mismo problema y esto es un error VS2010 si hay una conexión de referencia como: Web del proyecto -> proyecto personalizado -> Asamblea1 -.> Assembly2 (indirectamente)

Por que ahora encuentro si me refiero a la Asamblea1 en el proyecto web, entonces assembly2 se incluye en la carpeta bin. Así que he tenido que añadir un enlace de referencia adicional como: proyecto web -> Asamblea1 -> assembly2 (indirectamente). Entonces VS puede reconocer assembly2 e incluir su archivo DLL en publicar la acción.

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