Frage

Ich möchte meine sln Datei von TFS-Server entbinden und veröffentlichen es auf SVN gibt es eine „easy“ Option, dies zu tun. Es ist einfach sln zu öffnen und wählte unbind Option in Visual Studio, aber hat man je versucht, diesen Prozess zu automatisieren? Es gibt eine Lösung SLN-Datei mit xmlpoke und Löschen von Bindungsinformationen zu bearbeiten, aber ist es sicher?

War es hilfreich?

Lösung

Ich habe einige auf der MSDN Code Gallery veröffentlicht Proben für den TFS 2010 SDK , die zeigen, wie dies zu tun mit MSBuild und dem MSBuild Community-Aufgaben . Hier ist ein Ausschnitt von MSBuild-Skript aus dem WorkItemType.csproj Datei WorkItemObjectModel Beispiels:

<Import Project="$(MSBuildExtensionsPath32)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" />
<ItemGroup>
  <SourceFiles
    Include="$(SolutionDir)**/*.*"
    Exclude="$(SolutionDir)Package/**/*.*;$(SolutionDir)**/bin/**/*.*;$(SolutionDir)**/obj/**/*.*;$(SolutionDir)**/internal.proj;$(SolutionDir)**/*.*scc;$(SolutionDir)$(SolutionName).zip">
    <Visible>False</Visible>
  </SourceFiles>
</ItemGroup>
<Target Name="AfterBuild" Condition="'$(Configuration)'=='Release'" 
        Inputs="@(SourceFiles)" Outputs="$(SolutionDir)$(SolutionName).zip">
  <Delete
    Files="$(SolutionDir)$(SolutionName).zip"
    Condition="Exists('$(SolutionDir)$(SolutionName).zip')" />
  <PropertyGroup>
    <PackageDir>$(SolutionDir)Package\</PackageDir>
  </PropertyGroup>
  <MakeDir 
    Directories="$(PackageDir)" />
  <Copy 
    SourceFiles="@(SourceFiles)" 
    DestinationFiles="$(PackageDir)%(RecursiveDir)%(Filename)%(Extension)" />
  <Delete 
    Files="$(PackageDir)**/bin/**/*.*;$(PackageDir)**/obj/**/*.*" />
  <RemoveDir 
    Directories="$(PackageDir)**/bin;$(PackageDir)**/obj" />
  <Attrib 
    Files="@(PackageFiles)" 
    ReadOnly="false" />
  <FileUpdate
    Files="$(PackageDir)$(SolutionFileName)"
    IgnoreCase="true"
    Regex="^\s+GlobalSection\(TeamFoundationVersionControl\).+\n(\s*Scc.*\n)+\s+EndGlobalSection"
    ReplacementText=" "
    Multiline="true"
    Singleline="false" />
  <ItemGroup>
    <ProjectFiles Include="$(PackageDir)**/*.*proj" />
  </ItemGroup>
  <FileUpdate 
    Files="@(ProjectFiles)" 
    Regex="&lt;Scc[A-z]+&gt;.+&lt;/Scc[A-z]+&gt;" 
    ReplacementText=" " />
  <ItemGroup>
    <PackageFiles Include="$(PackageDir)**\*.*" />
  </ItemGroup>
  <Zip 
    Files="@(PackageFiles)" 
    WorkingDirectory="$(PackageDir)" 
    ZipFileName="$(SolutionDir)$(SolutionName).zip" />
  <Delete 
    Files="@(PackageFiles)" />
  <RemoveDir 
    Directories="$(PackageDir)" />
</Target>

Auf den Punkt gebracht, dieses Skript kopiert die Quelldateien in ein temporäres Verzeichnis, entfernt die Source-Control-Bindungen aus der Lösung und Projektdateien, dann die Quellen verlieren und schließlich löscht die temporäre Verzeichnis.

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