문제

TFS 서버에서 SLN 파일을 풀고 SVN에 게시하고 싶습니다.이를 수행 할 수있는 "쉬운"옵션이 있습니다. Visual Studio에서 SLN을 열고 Unbind 옵션을 선택하는 것은 쉽지만이 프로세스를 자동화하려고 시도한 사람이 있습니까? XMLPOKE를 사용하여 SLN 파일을 편집하고 바인딩 정보를 삭제하는 솔루션이 있지만 안전합니까?

도움이 되었습니까?

해결책

MSDN 코드 갤러리에 몇 가지 샘플이 게시되었습니다. TFS 2010 SDK MSBuild와 MSBuild 커뮤니티 작업. 다음은 WorkitemoBjectModel Sample의 WorkItemType.csproj 파일에서 MSBuild 스크립트 스 니펫입니다.

<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>

간단히 말해서,이 스크립트는 소스 파일을 임시 디렉토리로 복사하고 솔루션 및 프로젝트 파일에서 소스 제어 바인딩을 제거한 다음 소스를 ZIP로 설정하고 마지막으로 임시 디렉토리를 삭제합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top