Skip to content

Migrate GenerateBootstrapper to multithreaded execution #13627

Description

@jankratochvilcz

Background

GenerateBootstrapper produces ClickOnce setup.exe / bootstrapper artifacts by delegating to the internal BootstrapperBuilder. It exposes many path inputs and an OutputPath that defaults to Directory.GetCurrentDirectory(), both of which break under multithreaded execution.

Migration scope

  • Apply [MSBuildMultiThreadableTask]
  • Implement IMultiThreadableTask
  • Absolutize paths via TaskEnvironment.GetAbsolutePath() for: BootstrapperItems (ItemSpec), ApplicationFile, BootstrapperKeyFile, ComponentsLocation, OutputPath, Path, SupportUrl-derived paths
  • Use TaskEnvironment.GetEnvironmentVariable() for: N/A (delegated builder may need review)
  • Use TaskEnvironment.GetProcessStartInfo() for: N/A

Known complexity factors

  • Default OutputPath = Directory.GetCurrentDirectory() must be re-derived from TaskEnvironment.ProjectDirectory
  • Delegates heavy work to BootstrapperBuilder (under src/Tasks/BootstrapperUtil/) which performs its own file I/O and XML reads — propagate TaskEnvironment or absolutize before passing
  • Sets [Output] BootstrapperComponentFiles/BootstrapperKeyFile from internal builder — preserve original-form values (Sin 1)
  • Windows-only, NETFRAMEWORK-only feature path

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