[dotnet] Use the target framework version to compute the path to the task assembly.#25060
Conversation
…task assembly. For a .NET 10 version of our workload we have a "net10.0" version of the task assembly. However, '$(BundledNETCoreAppTargetFrameworkVersion)' is the version of .NET that is running - which would be '11.0' if using .NET 11 - so we can't use this variable. So use '$(TargetFramework)' instead, that should get the right 'netX.Y' version for the path to the task assembly.
There was a problem hiding this comment.
Pull request overview
Updates the workload MSBuild targets to locate the correct Xamarin.MacDev.Tasks.dll based on the project’s target framework version (instead of the .NET runtime version), which is necessary when multiple task assemblies exist for different netX.Y versions (e.g., net10.0 vs net11.0).
Changes:
- Switches task assembly path computation from
$(BundledNETCoreAppTargetFrameworkVersion)to$(TargetFrameworkVersion)to pick the correctnetX.Yfolder.
| <_TaskAssemblyFileNameWindows>Xamarin.iOS.Tasks.Windows.dll</_TaskAssemblyFileNameWindows> | ||
| <_TaskAssemblyRootDirectory>$(MSBuildThisFileDirectory)\..\tools\msbuild\</_TaskAssemblyRootDirectory> | ||
| <_TaskAssemblyName Condition="'$(_UseDesktopTaskAssemblies)' != 'true'">$(_TaskAssemblyRootDirectory)net$(BundledNETCoreAppTargetFrameworkVersion)\$(_TaskAssemblyFileName)</_TaskAssemblyName> | ||
| <_TaskAssemblyName Condition="'$(_UseDesktopTaskAssemblies)' != 'true'">$(_TaskAssemblyRootDirectory)net$(TargetFrameworkVersion.TrimStart('vV'))\$(_TaskAssemblyFileName)</_TaskAssemblyName> |
There was a problem hiding this comment.
TargetFrameworkVersion is already used elsewhere in the dotnet targets without a leading v (e.g. VersionEquals($(TargetFrameworkVersion), '6.0') in Xamarin.Shared.Sdk.DefaultItems.targets), so the extra .TrimStart('vV') here looks unnecessary and adds a somewhat brittle property-function call. Consider simplifying to net$(TargetFrameworkVersion) (or using $([MSBuild]::GetTargetFrameworkVersion('$(TargetFramework)')) if you want to derive the version from $(TargetFramework) explicitly).
| <_TaskAssemblyName Condition="'$(_UseDesktopTaskAssemblies)' != 'true'">$(_TaskAssemblyRootDirectory)net$(TargetFrameworkVersion.TrimStart('vV'))\$(_TaskAssemblyFileName)</_TaskAssemblyName> | |
| <_TaskAssemblyName Condition="'$(_UseDesktopTaskAssemblies)' != 'true'">$(_TaskAssemblyRootDirectory)net$(TargetFrameworkVersion)\$(_TaskAssemblyFileName)</_TaskAssemblyName> |
✅ [CI Build #c7c5909] Build passed (Build packages) ✅Pipeline on Agent |
✅ [PR Build #c7c5909] Build passed (Detect API changes) ✅Pipeline on Agent |
✅ API diff for current PR / commitNET (empty diffs)✅ API diff vs stableNET (empty diffs)ℹ️ Generator diffGenerator Diff: vsdrops (html) vsdrops (raw diff) gist (raw diff) - Please review changes) Pipeline on Agent |
✅ [CI Build #c7c5909] Build passed (Build macOS tests) ✅Pipeline on Agent |
This comment has been minimized.
This comment has been minimized.
🚀 [CI Build #c7c5909] Test results 🚀Test results✅ All tests passed on VSTS: test results. 🎉 All 156 tests passed 🎉 Tests counts✅ cecil: All 1 tests passed. Html Report (VSDrops) Download macOS tests✅ Tests on macOS Monterey (12): All 5 tests passed. Html Report (VSDrops) Download Linux Build VerificationPipeline on Agent |
For a .NET 10 version of our workload we have a "net10.0" version of the task assembly.
However, '$(BundledNETCoreAppTargetFrameworkVersion)' is the version of .NET
that is running - which would be '11.0' if using .NET 11 - so we can't use
this variable.
So use '$(TargetFramework)' instead, that should get the right 'netX.Y'
version for the path to the task assembly.