Pregunta

Creé un archivo build.proj que consiste en una tarea para copiar archivos que se generarán una vez que se complete la construcción. El problema es que estos archivos no se copian la primera vez y tengo que ejecutar msbuild de nuevo en build.proj para poder copiar los archivos. Por favor, ¿alguien puede decirme cuál es el problema con el siguiente archivo build.proj:

<Configuration Condition="'$(Configuration)' == ''">Debug</Configuration>

<SourcePath Condition="'$(SourcePath)' == ''">$(MSBuildProjectDirectory)</SourcePath> 

<BuildDir>$(SourcePath)\build</BuildDir>

</PropertyGroup> 

<ItemGroup> 
    <Projects 
       Include="$(SourcePath)\src\myApp\application.csproj">  
    </Projects> 
</ItemGroup> 

<Target Name="Build">
   <Message text = "Building project" />    
   <MSBuild   
     Projects="@(Projects)" 
     Properties="Configuration=$(Configuration)" /> 
</Target>

<ItemGroup>
   <OutputFiles Include ="$(MSBuildProjectDirectory)\**\**\bin\Debug\*.*"/>
</ItemGroup>

<Target Name="CopyToBuildFolder">
   <Message text = "Copying build items" />
   <Copy SourceFiles="@(OutputFiles)" DestinationFolder="$(BuildDir)"/>
</Target>

<Target Name="All"
   DependsOnTargets="Build; CopyToBuildFolder"/>

</Project> 
¿Fue útil?

Solución

Los grupos de elementos se evalúan cuando se analiza el script. En ese momento tus archivos aún no están allí. Para poder encontrar los archivos, deberá completar el grupo de elementos dentro de un objetivo.

  <!-- SQL Scripts which are needed for deployment -->
  <Target Name="BeforeCopySqlScripts">
    <CreateItem Include="$(SolutionRoot)\04\**\Databases\**\*.sql">
      <Output ItemName="CopySqlScript" TaskParameter="Include"/>
    </CreateItem>
  </Target>

Este ejemplo crea el Grupo de elementos denominado " CopySqlScript " usando la expresión en el atributo Include.

Editar:

Ahora puedo leer su script: agregue la etiqueta CreateItem dentro de su destino CopyToBuildFolder

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