복사 기사에 따르면 및 체크인 출력 :
<Copy SourceFiles="@(CompilationOutputs)" DestinationFolder="$(ReplicateSourceFolder)"/>
<Exec Command="$(TF) checkin /comment:"Checking in file from build" "$(ReplicateSourceFolder)" /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>
이 그것 (내가 '돈 작동합니다 같습니다 여기
는 실제로 존재하는 문서 파일을 추가하도록 확장을 변경 다른 항목 그룹을 구축 인라인 작업을 사용하여 다른 옵션입니다 모든 프로젝트에 대해 생성 된 XML 파일이 없으므로 두 번째 방법을 사용하고 있습니다.) 그러나 Teambu 2010에서 빌드를 실행하는 데 사용되는 UpgradeTemplate.xaml 워크 플로가 "MSB4067 오류가 발생하여 MSBuild 3.5로 실행됩니다. 요소 <그런데 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
TFSBuild.proj에 설정된 ToolsVersion 속성은 무엇입니까? . 3.5로 설정하면 같은 문제가 발생합니다. 4.0으로 설정하면 끝났습니다. 다른 옵션은 별도의 어셈블리로 사용자 지정 작업을 만들고 그런 식으로 포함시키는 것입니다. –