Skip to content

Migrate Tasks in the MSbuild repo to the new Task type #11834

@baronfel

Description

@baronfel

Checklist

No Modifications Required (added attribute only, no IMultiThreadableTask)

  • AssignCulture
  • AssignLinkMetadata
  • CallTarget (public)
  • CallTarget (intrinsic)
  • CombinePath
  • CombineTargetFrameworkInfoProperties
  • CombineXmlElements
  • ConvertToAbsolutePath
  • CreateProperty
  • Error
  • ErrorFromResources
  • FindAppConfigFile
  • FindInList
  • FindInvalidProjectReferences
  • FormatVersion
  • GetCompatiblePlatform
  • Hash
  • Message
  • MSBuildInternalMessage
  • RemoveDuplicates
  • SetRidAgnosticValueForProjects
  • Telemetry
  • Warning

Abstract/Base Classes (no transition required)

  • AppDomainIsolatedTaskExtension
  • AxTlbBaseTask
  • CreateManifestResourceName
  • GenerateManifestBase
  • ResolveProjectBase
  • RoslynCodeTaskFactoryCompilerBase
  • TaskExtension
  • TaskRequiresFramework
  • ToolTaskExtension
  • XamlDataDrivenToolTask

Complicated Tasks (might require significant refactoring)

  • Copy
  • Exec
  • ResolveAssemblyReference

Other tasks with potential issues with static caches (they use ToolLocationHelper)

Tasks with simple transition

  • MSBuild (public)
  • MSBuild (intrinsic)
  • Delete
  • DownloadFile
  • GetFileHash
  • ReadLinesFromFile
  • VerifyFileHash
  • WriteLinesToFile
  • MakeDir
  • Move
  • RemoveDir
  • Touch
  • Unzip
  • WriteCodeFragment
  • XmlPeek
  • XmlPoke
  • XslTransformation
  • ZipDirectory

Other (either simple or with unknown issues)

Difficulty: 1 = attribute-only, 2 = IMultiThreadableTask + a few path absolutizations, 3 = multiple inputs / batch I/O, 4 = ToolTask / GenerateManifestBase / static caches, 5 = AppDomain / COM / native interop. Sorted hardest-first.

Task PR Difficulty Reasoning
RegisterAssembly 5 NETFX-only, AppDomain, COM, registry mutation
UnregisterAssembly 5 NETFX-only, AppDomain, COM, registry
GenerateApplicationManifest #13177 4 GenerateManifestBase, many file inputs, signing
GenerateBootstrapper 4 Default OutputPath uses CWD; heavy BootstrapperBuilder I/O
GenerateDeploymentManifest #13177 4 GenerateManifestBase; deployment-specific paths
LC 4 ToolTask wrapping lc.exe; SDK lookup, many inputs
ResolveNativeReference 4 Manifest reader, many [Output] item groups, native interop
ResolveSDKReference 4 75 KB, static caches, ToolLocationHelper dependencies
AxImp 3 ToolTask wrapping AxImp.exe; shares AxTlbBaseTask with TlbImp
GenerateBindingRedirects 3 App.config read/write, multiple path I/O, XML rewriting
GenerateLauncher 3 LauncherBuilder file copy/patch; few inputs
ResolveManifestFiles #13177 3 Many file inputs; satellite/PDB resolution
TlbImp 3 ToolTask wrapping TlbImp.exe; shares base with AxImp
UpdateManifest #13177 3 XML manifest read/write
WinMDExp 3 ToolTask wrapping winmdexp.exe; modest path surface
AssignTargetPath ✅ merged via #13415 2 Already migrated
CreateCSharpManifestResourceName 2 Subclass of CreateManifestResourceName; resource path manipulation
CreateItem #13590 2 Item shuffling with light path absolutization
CreateVisualBasicManifestResourceName 2 Same shape as the C# variant
FindUnderPath ✅ merged via #13462 2 Already migrated
FormatUrl #13573 2 URI/path absolutization on a single input
GenerateTrustInfo #13622 2 NETFX-only manifest read/write; small surface
GetAssembliesMetadata 2 MetadataReader over assembly list
GetAssemblyIdentity #13588 2 AssemblyName.GetAssemblyName per input
ResolveCodeAnalysisRuleSet 2 Single ruleset path resolved against include dirs
ResolveKeySource #13623 2 Path absolutization for key file / certificate
SignFile #13621 2 signtool wrapper; single path input
AssignProjectConfiguration #13615 1 Attribute-only — no shared mutable state
RequiresFramework35SP1Assembly merged via #13575 1 Already migrated
ResolveNonMSBuildProjectOutput #13614 1 Attribute-only — pre-resolved paths from VS IDE

Metadata

Metadata

Assignees

No one assigned

    Labels

    Area: TasksIssues impacting the tasks shipped in Microsoft.Build.Tasks.Core.dll.EpicLTMeetingtriaged

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions