Remove the AbsolutePath.GetCanonicalForm polyfill once Arcade consumes an MSBuild with the public API
- Dominant language
- C#
- Stars
- 729
- Forks
- 397
- Avg merge
- 3d 15m
- Merged PRs (30d)
- 149
Description
`AbsolutePath.GetCanonicalForm()` is `internal` in the MSBuild packages Arcade currently consumes (verified: CS1061 against both the pinned 18.8.2 and the latest stable 18.9.6). It is public in `dotnet/msbuild` `main` (dotnet/msbuild#13711, closed 2026-08-31) but has not shipped yet.
`TaskEnvironment.GetAbsolutePath` deliberately absolutizes without canonicalizing, so migrated tasks that previously used `Path.GetFullPath` need the canonicalization step back wherever a path is compared, deduplicated, or emitted. Until the API is available, `src/Common/Internal/AbsolutePathExtensions.cs` polyfills it as an extension method.
When Arcade moves to an MSBuild package that exposes the API (18.12 or newer):
- Delete `src/Common/Internal/AbsolutePathExtensions.cs` and its `` links.
- Remove the accompanying `#pragma warning disable` for the banned `Path.GetFullPath` call, if one was needed.
The swap is source compatible: the real instance method takes precedence over the extension method, so call sites keep compiling either way.
Contributor guide
Research direction
Wait until Arcade consumes an MSBuild package exposing the public API, then inspect src/Common/Internal/AbsolutePathExtensions.cs and search for its Compile Include links. Remove the polyfill and any associated Path.GetFullPath warning suppression, then verify the affected projects still compile with the newer package.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- build-system
- Issue type
- Refactor
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 65/100