Domanda

Ho creato un file build.proj che consiste in un'attività per copiare i file che verranno generati al termine della compilazione. Il problema è che questi file non vengono copiati la prima volta e devo eseguire nuovamente msbuild su build.proj in modo che i file possano essere copiati. Qualcuno può dirmi cosa c'è che non va nel seguente file 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> 
È stato utile?

Soluzione

I gruppi di articoli vengono valutati quando viene analizzato lo script. In quel momento i tuoi file non sono ancora arrivati. Per poter trovare i file dovrai riempire il gruppo di elementi all'interno di una destinazione.

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

In questo esempio viene creato il gruppo di elementi denominato " CopySqlScript " utilizzando l'espressione nell'attributo Includi.

Modifica:

Ora posso leggere il tuo script: aggiungi il tag CreateItem nella tua destinazione CopyToBuildFolder

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top