| 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 |
Checklist
No Modifications Required (added attribute only, no IMultiThreadableTask)
Abstract/Base Classes (no transition required)
AppDomainIsolatedTaskExtensionAxTlbBaseTaskCreateManifestResourceNameGenerateManifestBaseResolveProjectBaseRoslynCodeTaskFactoryCompilerBaseTaskExtensionTaskRequiresFrameworkToolTaskExtensionXamlDataDrivenToolTaskComplicated Tasks (might require significant refactoring)
Other tasks with potential issues with static caches (they use ToolLocationHelper)
Tasks with simple transition
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.AppDomain, COM, registry mutationAppDomain, COM, registryGenerateManifestBase, many file inputs, signingBootstrapperBuilderI/OGenerateManifestBase; deployment-specific pathslc.exe; SDK lookup, many inputs[Output]item groups, native interopToolLocationHelperdependenciesAxImp.exe; sharesAxTlbBaseTaskwith TlbImpApp.configread/write, multiple path I/O, XML rewritingLauncherBuilderfile copy/patch; few inputsTlbImp.exe; shares base with AxImpwinmdexp.exe; modest path surfaceCreateManifestResourceName; resource path manipulationMetadataReaderover assembly listAssemblyName.GetAssemblyNameper inputsigntoolwrapper; single path input