-
Notifications
You must be signed in to change notification settings - Fork 507
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[release/7.0.2xx-xcode14.3] [dotnet] Fix linker path on Windows #18298
[release/7.0.2xx-xcode14.3] [dotnet] Fix linker path on Windows #18298
Conversation
When building from Windows, we need to pass the path to the illink assembly located on the Mac to the linker task. The educated guess we've been using is a bit fragile and has been getting us problems almost on each new .NET major release. On top of that, from .NET 8 the linker is in a separate NuGet package, so the assembly is no longer located in the SDK directory on the Mac. The fix is to follow the same approach we use to find the AOT compiler on the Mac by running a target that finds that information on the remote Mac, and brings it back to Windows, where it is cached and use across build. Created a new XamarinBuildTask class to share most of the code needed for this approach. Backport of xamarin#18285.
💻 [CI Build] Windows Integration Tests passed 💻✅ All Windows Integration Tests passed. Pipeline on Agent |
✅ API diff for current PR / commitNET (empty diffs)
✅ API diff vs stable.NET (No breaking changes)✅ Generator diffGenerator diff is empty Pipeline on Agent |
💻 [PR Build] Tests on macOS M1 - Mac Big Sur (11.5) passed 💻✅ All tests on macOS M1 - Mac Big Sur (11.5) passed. Pipeline on Agent |
💻 [PR Build] Tests on macOS M1 - Mac Ventura (13.0) passed 💻✅ All tests on macOS M1 - Mac Ventura (13.0) passed. Pipeline on Agent |
🚀 [CI Build] Test results 🚀Test results✅ All tests passed on VSTS: simulator tests. 🎉 All 79 tests passed 🎉 Tests counts
Pipeline on Agent |
When building from Windows, we need to pass the path to the illink
assembly located on the Mac to the linker task. The educated guess we've
been using is a bit fragile and has been getting us problems almost on
each new .NET major release. On top of that, from .NET 8 the linker is
in a separate NuGet package, so the assembly is no longer located in the
SDK directory on the Mac.
The fix is to follow the same approach we use to find the AOT compiler
on the Mac by running a target that finds that information on the remote
Mac, and brings it back to Windows, where it is cached and use across
build.
Created a new XamarinBuildTask class to share most of the code needed
for this approach.
Backport of #18285.