-1

TFS2010 から TFS2012 へのテスト アップグレードを行っている最中です。彼らはアップグレード テンプレートを使用して、カスタム MSBuild タスクの広範なセットを実行し、ビルドと展開を自動化しています。MSBuild プロジェクトは、もともと TFS2005 用に作成されたもので、ある時点で直接 TFS2010 にアップグレードされました。彼らが構築しているソリューションのほとんどは .NET 2.0 を対象としており、ほとんどの開発にはまだ VS2005 を使用しています。

これまでのところ、VS2005、VS2010、および TFS2012 を Update 1 で (この順序で) インストールし、TFS2010 データベースを TFS2012 にアップグレードしました。ビルド コントローラーは、アプリ層およびデータベースと同じマシン上に存在します。これは、実際のアップグレードの前にビルド プロセスで対処する必要がある問題を特定するための "概念実証" アップグレードであるためです。

MSBuild ベースのビルドを実行すると、次のエラーが発生します。

C:\Builds\18\Web\ES-INTEGRATION-WebTest\BuildType\TFSBuild.proj (75): このワークフローを実行するには、タイプ 'Microsoft.TeamFoundation.Build.Client.IBuildDetail' の拡張機能を構成する必要があります。C:\Builds\18\Web\ES-INTEGRATION-WebTest\BuildType\TFSBuild.proj (75): 「取得」タスクが予期せず失敗しました。

System.Activities.ValidationException: このワークフローを実行するには、タイプ 'Microsoft.TeamFoundation.Build.Client.IBuildDetail' の拡張機能を構成する必要があります。

System.Activities.Hosting.WorkflowInstanceExtensionCollection..ctor (アクティビティのワークフロー定義、WorkflowInstanceExtensionManager extensionManager) で

System.Activities.Hosting.WorkflowInstanceExtensionManager.CreateInstanceExtensions (アクティビティのワークフロー定義、WorkflowInstanceExtensionManager extensionManager) で

System.Activities.Hosting.WorkflowInstance.RegisterExtensionManager (WorkflowInstanceExtensionManager extensionManager) で

System.Activities.WorkflowApplication.EnsureInitialized() で

System.Activities.WorkflowApplication.RunInstance (WorkflowApplication インスタンス) で

System.Activities.WorkflowApplication.Invoke (アクティビティ アクティビティ、IDictionary`2 入力、WorkflowInstanceExtensionManager 拡張機能、TimeSpan タイムアウト) で

System.Activities.WorkflowInvoker.Invoke (アクティビティ ワークフロー、IDictionary`2 入力、TimeSpan タイムアウト、WorkflowInstanceExtensionManager 拡張機能) で

Microsoft.TeamFoundation.Build.Tasks.WorkflowTask.ExecuteInternal() で

Microsoft.TeamFoundation.Build.Tasks.Task.Execute() で

Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() で

Microsoft.Build.BackEnd.TaskBuilder.d__20.MoveNext() で

問題を再現する非常に小さなケースにビルドを切り詰めました。完全な .proj ファイルは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="DesktopBuild" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">

    <!-- Do not edit this -->
    <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\TeamBuild\Microsoft.TeamFoundation.Build.targets" />
    <ProjectExtensions>
        <!--  DESCRIPTION
     The description is associated with a build type. Edit the value for making changes.
    -->
        <Description>Builds and Deploys the BE site to the integration environment</Description>
        <!--  BUILD MACHINE
     Name of the machine which will be used to build the solutions selected.
    -->
        <BuildMachine>[redacted]</BuildMachine>
    </ProjectExtensions>
    <PropertyGroup>
        <!--  TEAM PROJECT
     The team project which will be built using this build type.
    -->
        <TeamProject>Web</TeamProject>
        <!--  BUILD DIRECTORY
     The directory on the build machine that will be used to build the
     selected solutions. The directory must be a local path on the build
     machine (e.g. c:\build).
    -->
        <BuildDirectoryPath>c:\build</BuildDirectoryPath>
        <!--  DROP LOCATION
      The location to drop (copy) the built binaries and the log files after
     the build is complete. This location has to be a valid UNC path of the
     form \\Server\Share. The build machine service account and application
     tier account need to have read write permission on this share.
    -->
        <DropLocation>\\[redacted]\BuildDrop</DropLocation>
        <!--  TESTING
     Set this flag to enable/disable running tests as a post build step.
    -->
        <RunTest>True</RunTest>
        <!--  WorkItemFieldValues
      Add/edit key value pairs to set values for fields in the work item created
      during the build process. Please make sure the field names are valid 
      for the work item type being used.
    -->
        <WorkItemFieldValues>Symptom=build break;Steps To Reproduce=Start the build using Team Build</WorkItemFieldValues>
        <!--  CODE ANALYSIS
       To change CodeAnalysis behavior edit this value. Valid values for this
       can be Default,Always or Never.

     Default - To perform code analysis as per the individual project settings
     Always  - To always perform code analysis irrespective of project settings
     Never   - To never perform code analysis irrespective of project settings
     -->
        <RunCodeAnalysis>Default</RunCodeAnalysis>
        <!--  UPDATE ASSOCIATED WORK ITEMS
     Set this flag to enable/disable updating associated workitems on a successful build
    -->
        <UpdateAssociatedWorkItems>false</UpdateAssociatedWorkItems>
        <!-- Title for the work item created on build failure -->
        <WorkItemTitle>Build failure in build:</WorkItemTitle>
        <!-- Description for the work item created on build failure -->
        <DescriptionText>This work item was created by Team Build on a build failure.</DescriptionText>
        <!-- Text pointing to log file location on build failure -->
        <BuildlogText>The build log file is at:</BuildlogText>
        <!-- Text pointing to error/warnings file location on build failure -->
        <ErrorWarningLogText>The errors/warnings log file is at:</ErrorWarningLogText>
    </PropertyGroup>



    <PropertyGroup>
        <SourceBranchPath>Main</SourceBranchPath>
    </PropertyGroup>

  <!-- Does some basic validation of the environment before the build starts -->
  <Target Name="PreBuildValidations" >
    <Get FileSpec="$/Web/$(SourceBranchPath)/BuildFiles/Tools/PSExec.exe" Workspace="$(WorkspaceName)" Recursive="false" Force="true" TeamFoundationServerUrl="$(TeamFoundationServerUrl)"/>
  </Target>

    <Target Name="BeforeGet">
        <CallTarget Targets="PreBuildValidations" />
    </Target>


</Project>
4

2 に答える 2