Frage

Ich gründe eine kontinuierliche Integrationsumgebung, mit VisualSVN Server und CrusieControl.NET. Was ich tun möchte, ist die Arbeitskopie vor der Aufgabe beginnt MSBuild löschen?

Ich habe gelesen, dass ich Nant oder eine Batch-Datei, die Ccnet würde aufrufen nutzen könnten. Was ist das Beste Praxis hier? Jede Hilfe zu diesem Thema würde ich toll!

Hier ist ein Auszug aus dem Abschnitt von ccnet.config

      <tasks>
        <msbuild>
            <ItemGroup>
                <FilesToDelete Include="C:\CruiseControl\Working\\\**\*"/>
            </ItemGroup>
            <Target Name="Task" DependsOn="Preparation">
                  build
            </Target>
            <Target Name="Preparation">
                  <Delete Files="@(FilesToDelete)" />
            </Target-->
            <executable>                                                      
                C:\WINDOWS\microsoft.net\Framework64\v3.5\MSBuild.exe                                              
            </executable> 
            <projectFile>Example.sln</projectFile>  
            <buildArgs>
                /p:Configuration=Release /p:MSBuildExtensionsPath=C:\Progra~2\MSBuild /p:MSBuildEmitSolution=1 /verbosity:minimal
            </buildArgs>                                                      
            <logger>
                C:\Program Files (x86)\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MSBuild.dll
            </logger>
        </msbuild>
      </tasks>
War es hilfreich?

Lösung

Ich habe die Antwort auf meine ursprüngliche Frage gefunden:

Ich hatte einfach das cleanCopy wahr innerhalb des Sourcecontrol Block zu setzen.

<sourcecontrol type="svn">                                            
    <trunkUrl>TRUNK-URL</trunkUrl>                
    <executable>SVN.EXE</executable>           
    <username>TEST</username>                                         
    <password>TEST</password> 
    <cleanCopy>true</cleanCopy>         
  </sourcecontrol>

Andere Tipps

Ich glaube nicht, msbuild Skript modifiziert hier die einfachste Lösung ist. die Arbeitskopie Löschen nicht Teil des Build selbst ist, ist es ein Teil des cc .net Build-Prozess though. Sie benötigen es, wenn Sie mit cc.net bauen, nicht, wenn Sie mit VS bauen oder anderes.

Was ich tun würde, ist es entweder zu tun mit Batch, Powershell oder einem msbuild Skript. Verzeichnis löschen ist einfach, damit ich es mit Batch zu tun würde empfehlen:

<prebuild>
     <exec>
        <executable>cmd.exe</executable>
        <buildArgs>/c "if exist "C:\CruiseControl\Working" rd /s /q "C:\CruiseControl\Working""</buildArgs>
    </exec>
</prebuild>

<tasks>

    <msbuild>
        <executable>                                                      
            C:\WINDOWS\microsoft.net\Framework64\v3.5\MSBuild.exe                                              
        </executable> 
        <projectFile>Example.sln</projectFile>  
        <buildArgs>
            /p:Configuration=Release /p:MSBuildExtensionsPath=C:\Progra~2\MSBuild /p:MSBuildEmitSolution=1 /verbosity:minimal
        </buildArgs>                                                      
        <logger>
            C:\Program Files (x86)\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MSBuild.dll
        </logger>
    </msbuild>
  </tasks>

Sie könnte tatsächlich den ersten Teil Ihrer MSBuild Aufgabe machen bereiten das Release-Verzeichnis durch die Bereinigung tun

Sie können es tun, indem Domain etwas ähnlich wie diese

<ItemGroup>
    <FilesToDelete Include="<PathGoesHere>\**\*"/>
</ItemGroup>

<Target Name="Task" DependsOn="Preparation">
      //normal task happens here
</Target>

<Target Name="Preparation">
      <Delete Files="@(FilesToDelete)" />
</Target>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top