Cómo copiar la salida del proyecto al que se hace referencia en Visual Studio

Tengo dos proyectos: Lib y Exe.

Oficial Lib genera algunos archivos en PostBuildEvent dentro $(TargetDir). supongamos que es

echo Foo > $(TargetDir)\Readme.txt

Exe referencias Lib con Copy Local establecido enTrue.

Desafortunadamente no se copian archivos a Exedirectorio de salida.

¿Cómo puedo enseñar a VS/MSBuild a copiar mis archivos al igual que copia los elementos del proyecto con Copy to Output Directory ?

preguntado el 29 de septiembre de 13 a las 22:09

2 Respuestas

Creo que se puede hacer si agregas un AfterBuild objetivo en su archivo de proyecto de Visual Studio de Exe proyecto como a continuación:

  <Target Name="AfterBuild">
    <ItemGroup>
      <LibProject Include="$(LibProjectDirectory)\Lib.csproj"/>
    </ItemGroup>
    <ItemGroup>
      <LibOutput Include="%(LibProject.RootDir)%(LibProject.Directory)\bin\$(Configuration)\*" />
    </ItemGroup>
    <Copy SourceFiles="@(LibOutput)" DestinationFolder="$(OutputPath)" />
  </Target>

Esto supone que Lib la salida del proyecto va a la ubicación predeterminada de %(LibProject.RootDir)%(LibProject.Directory)\bin\$(Configuration). Si está configurado de manera diferente, debe actualizar el LibOutput Elementos Include parámetro en consecuencia.

Respondido el 30 de Septiembre de 13 a las 10:09

No puede, al menos no directamente: msbuild no sabe, y definitivamente no debería, saber que crea archivos en el evento posterior a la compilación, y mucho menos que se ocupará de ellos.

Créelos directamente donde deberían terminar, o agregue un evento adicional posterior a la compilación en el proyecto Exe para copiar los archivos. En ambos casos, es conveniente definir un directorio de salida común como propiedad en un archivo msbuild e importar ese archivo en ambos proyectos, para que ambos puedan hacer referencia a la propiedad.

Respondido el 30 de Septiembre de 13 a las 08:09

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.