2010-12-14 5 views
0

http://geekswithblogs.net/jakob/archive/2009/03/05/implementing-dependency-replication-with-tfs-team-build.aspx을 기반으로하는 TFS 환경에서 종속성 복제 구성표 설정이 있습니다.TFS 팀에서 XML 문서 파일 가져 오기 스크립트

이 항목은 CompilationOutputs 항목 그룹을 사용하여 빌드 된 DLL 파일을 가져 와서 종속 프로젝트로 분기/병합합니다. 제 문제는 CompilationOutputs 항목 그룹에 DLL 만 포함되어 있으며 XML 문서 파일을 포함하고 싶습니다. 따라서이 라이브러리를 사용할 때 인텔리 센스 문서 팁을 얻을 수 있습니다. 이들을 포함하는 다른 품목 군 또는 다른 접근법이 있습니까? 수동으로 XML 파일을 찾아서 항목 그룹에 추가해야합니까?

우리는 TFS 2010을 사용 중입니다. 새로운 기능이 있다면, 우리는이 기능을 활용할 수 있습니다. (이 전체 스키마를 워크 플로우 프로세스로 바꾸지 않아도 좋을 것입니다. ...)

답변

1

복사 기사에 따르면 및 체크인 출력 :

<Copy SourceFiles="@(CompilationOutputs)" DestinationFolder="$(ReplicateSourceFolder)"/> 
<Exec Command="$(TF) checkin /comment:&quot;Checking in file from build&quot; &quot;$(ReplicateSourceFolder)&quot; /recursive"/> 

메타 데이터를 사용하여 XML 파일을 복사 할 수있는 체크인하기 전에 두 번째 사본 라인을 추가 할 수 없습니다?

<Target Name="Test"> 

    <ChangeExtension InputFiles="@(CompilationOutputs)" Extension=".xml"> 
     <Output TaskParameter="OutputFiles" ItemName="DocFiles" /> 
    </ChangeExtension> 

    <Copy SourceFiles="@(CompilationOutputs)" DestinationFolder="$(ReplicateSourceFolder)"/> 
    <Copy SourceFiles="@(DocFiles)" DestinationFolder="$(ReplicateSourceFolder)"/> 
    </Target> 

    <UsingTask TaskName="ChangeExtension" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll"> 
    <ParameterGroup> 
     <InputFiles ParameterType="Microsoft.Build.Framework.ITaskItem[]" Required="true"/> 
     <Extension ParameterType="System.String" Required="true"/> 
     <OutputFiles ParameterType="Microsoft.Build.Framework.ITaskItem[]" Output="true"/> 
    </ParameterGroup> 
    <Task> 
     <Code Type="Fragment" Language="cs"> 
     <![CDATA[ 
     if (InputFiles.Length > 0) 
     { 
     List<TaskItem> results = new List<TaskItem>(); 
     for (int i = 0; i < InputFiles.Length; i++) 
     { 
      ITaskItem item = InputFiles[i]; 
      string path = item.GetMetadata("FullPath"); 
      string docfile = Path.ChangeExtension(path, Extension); 
      if (File.Exists(docfile)) 
      { 
      results.Add(new TaskItem(docfile)); 
      } 
     } 
     OutputFiles = results.ToArray(); 
     } 
     ]]> 
     </Code> 
    </Task> 
    </UsingTask> 
+0

이 그것 (내가 '돈 작동합니다 같습니다 여기

<Copy SourceFiles="%(CompilationOutputs.RootDir)%(CompilationOutputs.Directory)\%(CompilationOutputs.Filename).xml" DestinationFolder="$(ReplicateSourceFolder)"/> 

는 실제로 존재하는 문서 파일을 추가하도록 확장을 변경 다른 항목 그룹을 구축 인라인 작업을 사용하여 다른 옵션입니다 모든 프로젝트에 대해 생성 된 XML 파일이 없으므로 두 번째 방법을 사용하고 있습니다.) 그러나 Teambu 2010에서 빌드를 실행하는 데 사용되는 UpgradeTemplate.xaml 워크 플로가 "MSB4067 오류가 발생하여 MSBuild 3.5로 실행됩니다. 요소 <> 아래에 요소가 있습니다. 인식 할 수 없다. " – bdukes

+0

그런데 4.0 버전을 사용하는 것처럼 보이는 로그에서 다음을 발견했습니다. C : \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ MSBuild.exe/nologo/noconsolelogger "C : \ Builds \ TFSBuild.proj "/ C : \ Builds \ 1 \ project \ build \ BuildType \ TfsBuild.rsp" – bdukes

+0

TFSBuild.proj에 설정된 ToolsVersion 속성은 무엇입니까? . 3.5로 설정하면 같은 문제가 발생합니다. 4.0으로 설정하면 끝났습니다. 다른 옵션은 별도의 어셈블리로 사용자 지정 작업을 만들고 그런 식으로 포함시키는 것입니다. –