Domanda

Nel mio script di build eseguito da TFS2008 sto cercando di copiare tutti i file dalla cartella A alla cartella B in modo ricorsivo sono riuscito a farlo usando l'attività:

<ItemGroup>
    <MyFiles Include="$(SolutionRoot)\MyFiles\**" />
</ItemGroup>

<Target Name="CopyFiles">
      <Message Text="Copy Files" />
      <Copy SourceFiles="@(MyFiles)"
            DestinationFolder="$(DeploymentFolder)\SomeFolder\%(RecursiveDir)" />

</Target>

Vorrei sollevare un avvertimento tramite TFS quando I miei file è vuoto.

Quindi ho due domande:

  1. Come faccio a sollevare un avvertimento tramite TFS?

  2. Come posso scoprire se itemgroup non contiene file?

È stato utile?

Soluzione

1) ATTENZIONE ATTENZIONE

http://msdn.microsoft.com/en-us/library/92775st5.aspx

2) Usa msBuildHelpder.itemCount

http://www.msbuildextensionpack.com/help/4.0.2.0/index.html

Ed ecco un esempio di build di esempio che ne dimostra l'uso:

<Project ToolsVersion="4.0" DefaultTargets="Default;UpdateMetadata" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <TPath>$(MSBuildProjectDirectory)\..\MSBuild.ExtensionPack.tasks</TPath>
        <TPath Condition="Exists('$(MSBuildProjectDirectory)\..\..\Common\MSBuild.ExtensionPack.tasks')">$(MSBuildProjectDirectory)\..\..\Common\MSBuild.ExtensionPack.tasks</TPath>
    </PropertyGroup>
    <Import Project="$(TPath)"/>

    <ItemGroup>
       <MyFiles Include="$(SolutionRoot)\MyFiles\**" />
    </ItemGroup>

    <Target Name="Default">
           <MSBuild.ExtensionPack.Framework.MsBuildHelper 
               TaskAction="GetItemCount" 
               InputItems1="@(MyFiles)">
              <Output TaskParameter="ItemCount" PropertyName="MyCount"/>
           </MSBuild.ExtensionPack.Framework.MsBuildHelper>
           <Warning
            Text=" No files in MyFiles collection."
            Condition="'$(MyCount)' &gt; '0'" />
    </Target>
</Project>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top