dotnet / maui

.NET MAUI is the .NET Multi-platform App UI, a framework for building native device applications spanning mobile, tablet, and desktop.
https://dot.net/maui
MIT License
22.26k stars 1.76k forks source link

Visual Studio 17.12 and .NET 8 requires XCode 16 #25888

Closed eqmarcin closed 3 days ago

eqmarcin commented 6 days ago

Description

I have updated Visual Studio Community to from 17.11.4 to 17.12.0 and now I can't build/run iOS apps on paired Mac (Mac OS Sonoma 14.7.1 with XCode 15.4) as it says that XCode 16 is required.

I'm using .NET 8.0.404 and workloads below (this setup works on another PC with VS 17.11.4) Image

Errors: This version of Microsoft.iOS requires the iOS 18.0 SDK (shipped with Xcode 16.0). Either upgrade Xcode to get the required header files or set the managed linker behaviour to Link Framework SDKs Only in your project's iOS Build Options > Linker Behavior (to try to avoid the new APIs). The linker step 'Setup' failed during processing: This version of Microsoft.iOS requires the iOS 18.0 SDK (shipped with Xcode 16.0). Either upgrade Xcode to get the required header files or set the managed linker behaviour to Link Framework SDKs Only in your project's iOS Build Options > Linker Behavior (to try to avoid the new APIs).

Changing linker setting to "Link Framework SDKs Only" fixes the above for builds but it disables Hot Reload ("iOS Linker settings for MyApp are unsupported").

Not sure if there is anything that I can do to have it working as before?

Notes: I can't downgrade VS version this feature is not available for Community edition. Upgrading Mac OS and XCode to v16 and/or .NET to 9 breaks the app.

Steps to Reproduce

No response

Link to public reproduction project repository

No response

Version with bug

8.0.80 SR8

Is this a regression from previous behavior?

No, this is something new

Last version that worked well

Unknown/Other

Affected platforms

iOS, I was not able test on other platforms

Affected platform versions

No response

Did you find any workaround?

No response

Relevant log output

brianmathews commented 3 days ago

You are not alone. I have the same issue.

jfversluis commented 3 days ago

If you want to keep using Xcode 15.4, you can install this version: https://github.com/xamarin/xamarin-macios/releases/tag/dotnet-8.0.1xx-xcode15.4-8030 of the .NET for iOS SDK. But you'll be stuck on .NET 8. You should be able to do that with dotnet workload install --version 8.0.402.

Is there any specific reason you don't want to use Xcode 16?

brianmathews commented 3 days ago

Oh wow, I didn't expect a response! Cool!

I am using Xcode 16, and it was working including submitting to the Apple App Store. The problems started when I upgraded to VS 17.12, and when I upgraded some NuGet packages. I use VS on Windows primarily, and use Pair-to-Mac when making builds for the Apple App Store.

So I don't have the exact same issue as the original poster, but I get the same error messages and duplicative versions of MAUI workloads.

I had everything working on VS 17.11 (or whatever version came before 17.12.0):

After installing VS 17.12 it made breaking changes:

So then I tried to get back to the previously known-working state with these steps https://github.com/xamarin/xamarin-macios/releases/tag/dotnet-8.0.1xx-xcode16.0-8303 below:

And now I have things as follows:

> dotnet --version
8.0.402

and:

> dotnet workload list

Workload version: 8.0.402.1

Installed Workload Id      Installation Source
----------------------------------------------------------
android                    SDK 8.0.400, VS 17.12.35506.116
aspire                     SDK 8.0.400, VS 17.12.35506.116
ios                        SDK 8.0.400, VS 17.12.35506.116
maccatalyst                SDK 8.0.400, VS 17.12.35506.116
macos                      SDK 8.0.400
maui                       SDK 8.0.400
maui-windows               SDK 8.0.400, VS 17.12.35506.116
tvos                       SDK 8.0.400

I tried to add my .csproj file for context, but this forum doesn't allow attaching .csproj files. If you want it I can rename it to *.txt and try attaching.

Resulting New Errors

I've gotten it running again on Windows VS when I don't use Pair-to-Mac.

I am getting strange and new errors with Pair-to-Mac from Windows VS:

Root assembly 'SQLitePCLRaw.provider.dynamic_cdecl' could not be found.
The file "obj\Release\net8.0-ios\ios-arm64\linked\Link.semaphore" cannot be created. Could not find a part of the path 'C:\swd\sotamat\SotamatApp\SotamatApp\obj\Release\net8.0-ios\ios-arm64\linked\Link.semaphore'.

Ideas of what to try next?

PureWeen commented 3 days ago

@brianmathews it'd be useful to breakup your blockers here a bit to separate issues so we can route them.

It sounds like you have two categories of issues here

1) You're blocked from updating to .NET9 because of some blockers/regressions 2) You're having troubles reverting back to .NET 8 workloads (state) and using pair to mac

If you could log issues why you're blocked from using .NET9 that would be helpful so we can fix any regressions.

And then any pair to mac issues you're hitting if you could log these through VS Feedback so we can check the relevant logs

PureWeen commented 3 days ago

Closing this issue as by design

@jfversluis has posted a workaround here if you need to use 15.4 https://github.com/dotnet/maui/issues/25888#issuecomment-2482799859

If you have specific bugs/issues blocking you from using XCode 16/17.12 please log those specific issues so we can resolve them