MSBuild kopieren Aufgabe nicht das Kopieren von Dateien in der ersten Runde

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

  •  03-07-2019
  •  | 
  •  

Frage

Ich habe eine build.proj Datei, die eine Aufgabe besteht Dateien zu kopieren, die generiert werden, nachdem die Build abgeschlossen ist. Das Problem ist, dass diese Dateien nicht beim ersten Mal kopiert und ich habe msbuild wieder auf dem build.proj laufen, so dass die Dateien kopiert werden können. Bitte kann mir jemand sagen, was ist falsch mit der folgenden build.proj-Datei:

<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> 
War es hilfreich?

Lösung

Die itemgroups ausgewertet werden, wenn das Skript analysiert wird. Zu dieser Zeit sind die Dateien noch nicht da. Um die Dateien zu finden, werden Sie die ItemGroup innerhalb eines Ziel füllen müssen.

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

In diesem Beispiel wird die ItemGroup des Namen "CopySqlScript" mit dem Ausdruck in dem Include-Attribute.

Edit:

Jetzt kann ich das Skript gelesen: den CreateItem Tag in Ihrem CopyToBuildFolder Ziel hinzufügen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top