2012-08-24 20 views
5

Tenemos un paquete de estudio visual (Paquete VS) que hace referencia a un proyecto de biblioteca de clase (Proyecto A). El Proyecto A a su vez hace referencia a otro proyecto de biblioteca de clase (Proyecto B).VSIX El paquete no incluye las dependencias del proyecto al que se hace referencia

Así que la estructura de dependencias se parece a esto: VS paquete> Proyecto A> B Proyecto

existen Todos los proyectos dentro de la misma solución y las dependencias se han establecido como referencias apropiadas del proyecto.

Si construyo el paquete en Visual Studio y miro en la carpeta bin/Debug, todos los ensamblajes necesarios están incluidos, incluidos los del Proyecto B. Sin embargo, cuando se implementa el paquete, solo los ensamblados del Proyecto A están presentes y los del Proyecto B faltan. ¿Cómo le digo a Visual Studio que incluya la dependencia indirecta del Proyecto B en el paquete?

This MSDN documento sugiere que "De forma predeterminada en una solución multiproyecto, si un proyecto que genera un paquete VSIX incluye una referencia a otro proyecto en la misma solución, incluye las dependencias de ese proyecto".

Sin embargo, estoy descubriendo que este no es el caso.

Mi pregunta es muy similar a this one, excepto que tengo problemas con el ensamblaje del proyecto principal y no con los ensamblajes de localización satelital. La respuesta en esta otra publicación no me funciona porque parece que solo funciona para ensamblajes satelitales.

¿Hay algún otro Grupo de resultados que pueda especificar para que el paquete incluya también dependencias indirectas?

Gracias por mirar.

+0

yo no era capaz de repro esto. ¿Está seguro de que hay una dependencia de nivel de fuente de VSPackage -> ProjectA y ProjectA -> ProjectB (es decir,un tipo en ProjectA usa un tipo de ProjectB)? –

+0

@AaronMarten Gracias por la respuesta. Sí, hay una dependencia de nivel de origen en el código. La eliminación de cualquiera de las referencias del proyecto causa una gran cantidad de errores de compilación cuando las clases a las que se hace referencia ya no se pueden encontrar. He creado una solución simple que muestra el problema para mí, se puede descargar [AQUÍ] (http://www.gogofile.com/Default.aspx?p=sc&ID=634817287005530000_4331) – Martyn

Respuesta

3

Lo más simple que puede hacer en este caso particular es el proyecto de referencia B del proyecto VSPackage y establecer la propiedad "Asamblea de salida de referencia" en False para evitar introducir una dependencia en tiempo de compilación.

+0

Sí, esta es la solución obvia y es lo que hice para que esto funcione en el corto plazo. Sin embargo, me gustaría llegar al fondo de esto y entender por qué no está funcionando como debería. ¿Has probado con la solución de ejemplo que cargué? – Martyn

1

que tenía un problema similar: Mi VS paquete referenciado otro proyecto proyecto VS paquete (~ Proyecto A) que a su vez hace referencia a un grupo de otros proyectos (~ Proyecto B) que contiene la carne de nuestra extensión .

Inspirado por esta respuesta: VSIX package doesn't include localized resources of referenced assembly, añadí 'BuiltProjectOutputGroup;BuiltProjectOutputGroupDependencies;GetCopyToOutputDirectoryItems;SatelliteDllsProjectOutputGroup' a la propiedad Output Groups Included in VSIX de la referencia de VS paquete a Proyecto A.

Esto tuvo el efecto de dejar caer todas las DLL de dependencia en la carpeta ...\Debug\ para mi VS Proyecto, pero todavía no recibió incluidos en el VSIX.

Finalmente fui y añade las banderas BuiltProjectOutputGroup;BuiltProjectOutputGroupDependencies;GetCopyToOutputDirectoryItems;SatelliteDllsProjectOutputGroup a todas las referencias de mi Proyecto Un a cada uno de mis Proyecto B - entonces todos se incluyen en la VSIX.

(Por cierto esto es con con Visual Studio 2013, pero no parecen tener mucho cambio desde 2010)

Cuestiones relacionadas