Conseguir un destino para ejecutar antes que otra cosa se ejecuta cuando se construye a partir de Visual Studio

StackOverflow https://stackoverflow.com/questions/1954670

Pregunta

Estoy intentando conseguir un objetivo costoso de una sola vez para funcionar sólo cuando la construcción de un determinado proyecto de nivel superior (que tiene muchas dependencias).

No tengo ningún problema en conseguir este funcionamiento normal de msbuild / línea de comandos de generación. Lo hago con el ajuste y InitialTargets en el proyecto, o alternativamente con

  

.

La parte difícil es con Visual Studio. Cuando construyo el mismo proyecto de VS. VS ejecuta las dependencias antes incluso invocando mi .csproj, así que mi objetivo (que afecta a cómo se construyen los otros proyectos) no llega a funcionar hasta que ya se han construido.

¿Hay alguna manera de forzar a VS para ejecutar un objetivo antes de invocar las dependencias?

Actualmente estoy trabajando en torno a este, ejecutando el mismo objetivo costosa de mi proyecto más bajo nivel (el que conseguir siempre es construido ...) mediante el uso de:

  

Condición = "$ (BuildingInsideVisualStudio)"

¿Alguna idea sobre cómo conseguir este hecho "correctamente"? Una vez más, estoy buscando una solución que funcione DE VS.

¿Fue útil?

Solución

La única manera de hacer esto (si entiendo la pregunta) es crear un proyecto ficticio, que le diga a VS para construir la primera, que hace lo que quiere. VS aceptará casi cualquier archivo de MSBuild si se le da una extensión .csproj y el objetivo Generar.

Otros consejos

Visual Studio utiliza un compilador en proc para ayudar con la UX del proceso de construcción. Becuase de esto no puede haber alguna diferencia entre VS y MSBuild. Intente configurar la UseHostCompilerIfAvailable propiedad en false en el archivo de proyecto. Esto obligará a VS utilizar MSBuild para la construcción. El inconveniente es el rendimiento dentro de Visual Studio.

Se podría utilizar el fragement siguientes aparatos en su .csproj (o .vbproj) archivo.

<PropertyGroup>
    <UseHostCompilerIfAvailable>false</UseHostCompilerIfAvailable>
</PropertyGroup>

¿Por qué no anular el objetivo <Target Name="BeforeBuild" />? Que se ejecutarán antes de la construcción real del proyecto (ya que el objetivo Build depende de BeforeBuild). Visual Studio está llamando a la meta de construcción (o reconstrucción), por lo que anulando objetivo en el .csproj hará que se llamará en primer lugar.

A menos que usted está mirando para hacer algo incluso antes de lo que en el msbuild?

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