Skip to content

Migrate AxImp to multithreaded execution #13626

@jankratochvilcz

Description

@jankratochvilcz

Background

AxImp (internal nested ToolTask used by ResolveComReference) wraps AxImp.exe to generate ActiveX wrapper assemblies. As a ToolTask, it inherits process-launch semantics that depend on the current working directory and environment.

Migration scope

  • Apply [MSBuildMultiThreadableTask] to AxImp (and audit shared AxTlbBaseTask base)
  • Implement IMultiThreadableTask
  • Absolutize paths via TaskEnvironment.GetAbsolutePath() for: ActiveXControlName/AssemblyFile, OutputAssembly, KeyFile, KeyContainer-derived paths, ToolPath
  • Use TaskEnvironment.GetEnvironmentVariable() for: any env vars consumed by ToolTask base (review)
  • Use TaskEnvironment.GetProcessStartInfo() for: AxImp.exe invocation (via ToolTask override)

Known complexity factors

  • Inherits AxTlbBaseTask : ToolTaskExtension — shared base with TlbImp; migration must coordinate
  • ToolTask Execute constructs ProcessStartInfo internally — likely needs override of ExecuteTool/GenerateCommandLineCommands paths to route through TaskEnvironment
  • Used as a sub-task by ResolveComReference; verify call sites pass through TaskEnvironment
  • Windows-only / NETFRAMEWORK-only feature

Exit criteria

  • Build clean, no new warnings
  • Existing tests pass
  • No regression in error message paths (Sin 2 audit)
  • No leakage of absolutized paths into [Output] properties (Sin 1 audit)

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    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