msbuild msbuild-task

Copia MSBuild salida de otro proyecto en la salida del proyecto actual



msbuild-task (2)

Hice este trabajo, aunque me encantaría encontrar una solución más limpia que tome el avance de los parámetros integrados dentro de MSBuild (como $ (TargetDir), etc. pero para apuntar al proyecto para el que quiero obtener el resultado). De todos modos, esto es lo que hice:

<Target Name="AfterBuild"> <Copy SourceFiles="$(SolutionDir)MyProject.Dal.Linq/bin/$(Configuration)/MyProject.Dal.Linq.dll" DestinationFolder="$(TargetDir)"/> </Target>

Me encantaría ver una solución más limpia, pero esto debería funcionar por ahora.

Tengo una situación en la que quiero copiar el ensamblaje de salida de un proyecto en el directorio de salida de mi aplicación de destino utilizando MSBuild, sin rutas de codificación difíciles en mi tarea Copiar MSBuild. Aquí está el escenario:

  • Proyecto A - Proyecto de aplicación web
  • Proyecto B - Proyecto de interfaz Dal
  • Proyecto C - Proyecto de implementación de Dal

También hay una capa de Negocio, pero no tiene relevancia para el problema de MSBuild que estoy tratando de resolver.

Mi capa de negocios tiene una referencia a mi proyecto Dal.Interface. Mi proyecto web tiene una referencia a la capa Business y, tal como está, realizar una construcción hará que la capa empresarial y los proyectos Dal.Interface entren en la salida. Hasta aquí todo bien. Ahora, para que la aplicación web se ejecute, necesita la implementación de Dal. No quiero que se haga referencia a la implementación en ninguna parte, ya que quiero aplicar la codificación a la interfaz y no tener una referencia significa que no se mostrará en intellisense, etc.

Así que pensé que podría manejar esto a través de la operación de copia de MSBuild como una tarea de AfterBuild (tengo la configuración de implementación de Dal para compilar cuando se construye el proyecto web, simplemente no se hace referencia). No quiero codificar las rutas de acceso ni ninguna otra cosa en los parámetros MSBuild, así que estoy tratando de averiguar cómo hacer referencia al resultado del proyecto Dal desde el archivo MSBuild del Proyecto de Aplicación Web.

Entonces, según los proyectos mencionados anteriormente, esto es lo que quiero que suceda:

  1. La creación de la aplicación web se inició
  2. Todos los proyectos requeridos se compilan (ya están configurados, así que esto se hace)
  3. La tarea "AfterBuild" de MSBuild se inicia y la salida del Proyecto C (Implementación Dal) se copia en el directorio Bin del Proyecto A (aplicación web)

La parte 3 es donde estoy atascado.

Estoy seguro de que esto se puede hacer, solo que no encuentro una buena referencia para ayudar. Gracias de antemano por cualquier ayuda.


Entonces, quiere tener una referencia, pero no tenerla visible en VS. Por lo tanto, si lo necesita, puede compilarlo y copiarlo como salida en cualquier otro archivo de Content . Así es como lo harías:

<Target Name="IncludeDALImplementation" BeforeTargets="AfterBuild"> <MSBuild Projects="../DalImplementation/DAL.csproj" BuildInParallel="$(BuildInParallel)" Targets="Build"> <Output TaskParameter="TargetOutputs" ItemName="DalImplementationOutput" /> </MSBuild> <ItemGroup> <Content Include="@(DalImplementationOutput)" /> </ItemGroup> </Target>