Question

J'ai créé un fichier build.proj qui consiste en une tâche permettant de copier les fichiers qui seront générés une fois la génération terminée. Le problème est que ces fichiers ne sont pas copiés la première fois et que je dois réexécuter msbuild sur le build.proj pour que les fichiers puissent être copiés. Quelqu'un peut-il me dire ce qui ne va pas avec le fichier build.proj suivant:

<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> 
Était-ce utile?

La solution

Les groupes d'éléments sont évalués lors de l'analyse du script. À ce moment-là, vos fichiers ne sont pas encore là. Pour pouvoir trouver les fichiers, vous devez renseigner le groupe d'éléments à partir d'une cible.

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

Cet exemple crée le groupe de tâches nommé "CopySqlScript". en utilisant l'expression dans l'attribut Inclure.

Modifier:

Je peux maintenant lire votre script: ajoutez la balise CreateItem dans votre cible CopyToBuildFolder

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top