Skip to content

Conversation

@rolfbjarne
Copy link
Member

No description provided.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request adds validation to detect when an MSBuild task tries to execute an external process without having the SdkDevPath property set. This helps catch configuration errors earlier with a clear error message.

Changes:

  • Added error detection in ExecuteAsync to log an error when SdkDevPath is not set on macOS
  • Updated test infrastructure to automatically set SdkDevPath when creating XamarinTask instances
  • Added new error message E7164 to the localization resources

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

File Description
msbuild/Xamarin.MacDev.Tasks/Tasks/XamarinTask.cs Added validation to check for missing SdkDevPath before executing external processes, and changed ExecuteAsync signature to accept Task instead of TaskLoggingHelper
tests/msbuild/Xamarin.MacDev.Tasks.Tests/TestHelpers/TestBase.cs Updated CreateTask method to automatically set SdkDevPath for XamarinTask instances to prevent test failures
msbuild/Xamarin.Localization.MSBuild/MSBStrings.resx Added new error message E7164 for missing SdkDevPath scenario


if (Environment.OSVersion.Platform == PlatformID.MacOSX && string.IsNullOrEmpty (sdkDevPath)) {
log.LogError (MSBStrings.E7164 /* The task '{0}' is trying to call an external process, but a path to Xcode has not been provided. Please file an issue at https://github.com/dotnet/macios/issues/new/choose. */, task.GetType ().Name);
log.LogMessage (MessageImportance.Low, Environment.StackTrace);
Copy link

Copilot AI Jan 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Logging Environment.StackTrace here will show the stack from where Environment class is called, not the actual call stack leading to this error. Consider using new StackTrace().ToString() instead to get the actual call stack, which would be more useful for debugging.

Copilot uses AI. Check for mistakes.

if (Environment.OSVersion.Platform == PlatformID.MacOSX && string.IsNullOrEmpty (sdkDevPath)) {
log.LogError (MSBStrings.E7164 /* The task '{0}' is trying to call an external process, but a path to Xcode has not been provided. Please file an issue at https://github.com/dotnet/macios/issues/new/choose. */, task.GetType ().Name);
log.LogMessage (MessageImportance.Low, Environment.StackTrace);
Copy link

Copilot AI Jan 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After logging the error about the missing SdkDevPath, the code continues to execute the external process, which will likely fail or produce confusing errors. Consider returning early after logging the error to prevent cascading failures and make the error message clearer. This could be done by returning a failed Execution object or throwing an exception that gets caught by the caller.

Suggested change
log.LogMessage (MessageImportance.Low, Environment.StackTrace);
log.LogMessage (MessageImportance.Low, Environment.StackTrace);
throw new InvalidOperationException ("The task is trying to call an external process, but a path to Xcode has not been provided.");

Copilot uses AI. Check for mistakes.
@vs-mobiletools-engineering-service2
Copy link
Collaborator

✅ [CI Build #018c9a4] Build passed (Build packages) ✅

Pipeline on Agent
Hash: 018c9a49274b7072095667df5ea1e02ebf7242f9 [PR build]

@vs-mobiletools-engineering-service2
Copy link
Collaborator

✅ [PR Build #018c9a4] Build passed (Detect API changes) ✅

Pipeline on Agent
Hash: 018c9a49274b7072095667df5ea1e02ebf7242f9 [PR build]

@vs-mobiletools-engineering-service2
Copy link
Collaborator

✅ API diff for current PR / commit

NET (empty diffs)

✅ API diff vs stable

NET (empty diffs)

ℹ️ Generator diff

Generator Diff: vsdrops (html) vsdrops (raw diff) gist (raw diff) - Please review changes)

Pipeline on Agent
Hash: 018c9a49274b7072095667df5ea1e02ebf7242f9 [PR build]

@vs-mobiletools-engineering-service2
Copy link
Collaborator

✅ [CI Build #018c9a4] Build passed (Build macOS tests) ✅

Pipeline on Agent
Hash: 018c9a49274b7072095667df5ea1e02ebf7242f9 [PR build]

@vs-mobiletools-engineering-service2
Copy link
Collaborator

💻 [CI Build #018c9a4] Tests on macOS X64 - Mac Sonoma (14) passed 💻

All tests on macOS X64 - Mac Sonoma (14) passed.

Pipeline on Agent
Hash: 018c9a49274b7072095667df5ea1e02ebf7242f9 [PR build]

@vs-mobiletools-engineering-service2
Copy link
Collaborator

💻 [CI Build #018c9a4] Tests on macOS M1 - Mac Monterey (12) passed 💻

All tests on macOS M1 - Mac Monterey (12) passed.

Pipeline on Agent
Hash: 018c9a49274b7072095667df5ea1e02ebf7242f9 [PR build]

@vs-mobiletools-engineering-service2
Copy link
Collaborator

💻 [CI Build #018c9a4] Tests on macOS M1 - Mac Ventura (13) passed 💻

All tests on macOS M1 - Mac Ventura (13) passed.

Pipeline on Agent
Hash: 018c9a49274b7072095667df5ea1e02ebf7242f9 [PR build]

@vs-mobiletools-engineering-service2
Copy link
Collaborator

💻 [CI Build #018c9a4] Tests on macOS arm64 - Mac Sequoia (15) passed 💻

All tests on macOS arm64 - Mac Sequoia (15) passed.

Pipeline on Agent
Hash: 018c9a49274b7072095667df5ea1e02ebf7242f9 [PR build]

@vs-mobiletools-engineering-service2
Copy link
Collaborator

💻 [CI Build #018c9a4] Tests on macOS arm64 - Mac Tahoe (26) passed 💻

All tests on macOS arm64 - Mac Tahoe (26) passed.

Pipeline on Agent
Hash: 018c9a49274b7072095667df5ea1e02ebf7242f9 [PR build]

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2
Copy link
Collaborator

🚀 [CI Build #018c9a4] Test results 🚀

Test results

✅ All tests passed on VSTS: test results.

🎉 All 124 tests passed 🎉

Tests counts

✅ cecil: All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (iOS): All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (MacCatalyst): All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (macOS): All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (Multiple platforms): All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (tvOS): All 1 tests passed. Html Report (VSDrops) Download
✅ framework: All 2 tests passed. Html Report (VSDrops) Download
✅ fsharp: All 4 tests passed. [attempt 2] Html Report (VSDrops) Download
✅ generator: All 5 tests passed. [attempt 2] Html Report (VSDrops) Download
✅ interdependent-binding-projects: All 4 tests passed. [attempt 2] Html Report (VSDrops) Download
✅ introspection: All 6 tests passed. Html Report (VSDrops) Download
✅ linker: All 44 tests passed. Html Report (VSDrops) Download
✅ monotouch (iOS): All 9 tests passed. [attempt 2] Html Report (VSDrops) Download
✅ monotouch (MacCatalyst): All 11 tests passed. [attempt 2] Html Report (VSDrops) Download
✅ monotouch (macOS): All 12 tests passed. Html Report (VSDrops) Download
✅ monotouch (tvOS): All 11 tests passed. Html Report (VSDrops) Download
✅ msbuild: All 2 tests passed. Html Report (VSDrops) Download
✅ windows: All 3 tests passed. Html Report (VSDrops) Download
✅ xcframework: All 4 tests passed. Html Report (VSDrops) Download
✅ xtro: All 1 tests passed. Html Report (VSDrops) Download

Pipeline on Agent
Hash: 018c9a49274b7072095667df5ea1e02ebf7242f9 [PR build]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants