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>