Граф коммитов

124 Коммитов

Автор SHA1 Сообщение Дата
Rolf Bjarne Kvinge c303a9c7c7
[dotnet] Multi target with Xcode 15.0 (#20155)
Add multi-targeting support for our initial .NET 8 packs (for Xcode
15.0).

This means a library/binding project can do:

```xml
<TargetFrameworks>net8.0-ios17.0;net8.0-ios17.2</TargetFrameworks>
```

and the library will be built in two varieties: once using our iOS 17.0
bindings, and once using our iOS 17.2 bindings.

An app project can also do:

```xml
<TargetFramework>net8.0-ios17.0</TargetFramework>
```

to build with the iOS 17.0 bindings (which is typically not very useful,
since building with the latest iOS SDK is usually best).
2024-02-28 09:03:53 +01:00
Rolf Bjarne Kvinge 546044fefa
[dotnet] Add warning when the TargetPlatformVersion isn't supported (#19901)
We've used to ignore the target platform version (the "17.0" part in "net8.0-ios17.0")
since our initial .NET relaese - customers could specify any valid OS version between
the minimum and maximum versions, and we'd completely ignore the value [1].

The purpose of the target platform version is to specify which bindings to choose:
"net8.0-ios17.0" would mean that the developer wants packages that have bindings
for iOS 17.0 (and earlier iOS versions, but not later iOS versions).

So saying "net8.0-ios11.0" would technically mean that the developer would want our
bindings for iOS 11.0 (and earlier iOS versions, but not later iOS versions). The
problem is that we don't ship any such thing... we shipped iOS 17.0 bindings in .NET
8, and that's it, you can't choose to build with something that does *not* have bindings
for iOS 17.0.

This will change with multi-targeting: we'll support *some* matrix of bindings. For
instance, we might want to support the OS version we shipped initial support in any
given .NET release + the latest OS version.

For example, we might want to support both of these:

* net8.0-ios17.0
* net8.0-ios17.2

This means that the target platform version (17.0/17.2) can't keep staying ignored.

There was an somewhat related issue with the `SdkSupportedTargetPlatformVersion`,
where we're now able to distinguish between old versions we no longer support and
new versions that limits the valid values for TargetPlatformVersion (see 74d83ca7e3).
We've already taken advantage of this to properly annotate every version, even in
.NET 8 (in a future service update), because the dotnet/sdk change required to understand
the new annotations (and ignore old versions in the `SdkSupportedTargetPlatformVersion`
item group) won't be shipped until .NET 9, so this won't be a breaking change in
.NET 8.

However, we'd still like to give customers a heads up that their project files need
to change, so this PR adds a warning (that tells developers what to do), and then
in .NET 9 we'll make the warning an error instead. Side note: Android is also making
an invalid target platform version an error in .NET 9: https://github.com/xamarin/xamarin-android/pull/8569.

[1]: We'd ignore the value for executable projects. It did have an effect for library
projects that were packed into NuGets: the target platform version would be stored
in the NuGet.
2024-01-25 09:23:03 +01:00
Alex Soto b3f7021eff
[Xcode 15.2] Bump to Xcode 15.2 (#19785)
This is a manual and squashed backport of
https://github.com/xamarin/xamarin-macios/pull/19717 and it was updated
to use Xcode 15.2 since Xcode 15.2 contains the same SDKs as Xcode 15.1
but Xcode 15.2 has visionOS SDK and it is the new stable release from
Apple.

---------

Co-authored-by: Rolf Bjarne Kvinge <rolf@xamarin.com>
2024-01-12 04:56:22 -05:00
Rolf Bjarne Kvinge 5b1fc67694
[dotnet] Stop using a separate default platform version. (#19754)
In theory we should define the default platform version if it's not specified
in the TFM, and this default should not change for a given .NET version:

* We release support for iOS 17.0 with .NET 8
* Apple releases iOS 18.0, we're still using .NET 8. This default continues to be iOS 17.0
* .NET 9 is shipped, and at this point we bump the default to iOS 18.0

Basically: this should be the last OS version of the platform in question when
the current major .NET version is first released to stable.

Ref: 8e6394406d/accepted/2020/net5/net5.md (os-versions)

However, this doesn't work well for Apple platforms: whenever Apple releases
new Xcode versions, our existing workloads might not be compatible with the
new Xcode. We'll of course ship updateds workload with support for the new
Xcode, but defaulting to an older target platform version would mean that
developers wouldn't get the new workload, they'd get the old one. This is
exacerbated by the fact that Apple aggressively auto-updates Xcode on
developers' machines: they might wake up one day to a broken build - the
obvious fix ("dotnet workload update") doesn't fix anything - even if we've
shipped updated workloads - because the default is to use the old one. They'd
have to manually specify the target platform version in the target platform to
get the updated workload ("net8.0-ios17.2" to use the iOS 17.2 workload
instead of "net8.0-ios", which would use the default (old/initial/17.0) .NET 8
workload) - and then update _again_ when the next Xcode comes around. At this
point the point of having a sane default value is totally out the window,
because everybody would have to specify (and continuously update) a platform
version in their project files to keep their projects building.

So we've made the decision that the default target platform version is always
the latest target platform version.
2024-01-09 09:47:07 +01:00
Rolf Bjarne Kvinge 8043a7d2c1
Update Make.versions
Co-authored-by: Alex Soto <alex@soto.dev>
2023-10-11 18:15:46 +02:00
Rolf Bjarne Kvinge 50c34f31a8 Merge remote-tracking branch 'origin/net8.0-xcode15' into merge-xcode15-into-net8.0 2023-10-10 23:26:57 +02:00
Rolf Bjarne Kvinge f56a2575c3
[net8.0] Revert multi-targeting support. (#19145)
It turns out to have a few sharp edges we need to smooth out first.
2023-10-10 17:20:09 +02:00
Alex Soto 391b8e2690
[xcode15] Bump to Xcode 15 stable version (#19009)
Co-authored-by: Rolf Bjarne Kvinge <rolf@xamarin.com>
2023-09-19 12:34:34 -04:00
Rolf Bjarne Kvinge 673dd5782b [net8.0-xcode15] Merge net8.0 into net8.0-xcode15. 2023-09-08 10:31:44 +02:00
Rolf Bjarne Kvinge 42f523812f [dotnet] Add support for multi-targeting. 2023-09-06 11:32:54 +02:00
Rolf Bjarne Kvinge dbfebef626
[net8.0-xcode15] Bump default target platform version to Xcode 15's OS versions. (#18815)
Our .NET 8 release will launch with Xcode 15 support, so bump the
default target platform version to the corresponding Xcode 15 OS versions.
2023-08-25 10:47:06 +02:00
Alex Soto 17d7a6cbae Fix Make.versions 2023-08-04 11:49:45 -04:00
Rolf Bjarne Kvinge 847763a49f Bump to Xcode 15 and the corresponding OS version. 2023-08-04 11:47:27 -04:00
Alex Soto db0b1ff52f Merge remote-tracking branch 'xamarin/main' into net8.0-main-merge 2023-04-05 15:25:09 -04:00
VS MobileTools Engineering Service 2 4621cf219e
[main] Bump .NET 6 versions old-fashioned 🥃 (#17975)
Backport of #17974

Co-authored-by: Alex Soto <alex@alexsoto.me>
2023-04-04 13:08:13 -04:00
VS MobileTools Engineering Service 2 87e159ac14
[main] Bump .NET 6 versions old-fashioned 🥃 (#17957)
Bumps .NET 6 to release/6.0.4xx-xcode14.3 @
2f729d37ef


Backport of #17952

Co-authored-by: Alex Soto <alex@alexsoto.me>
2023-03-31 07:08:48 -04:00
Alex Soto 23b8c240dc [versions] Bump legacy versions to make room for stable 2023-03-29 14:37:51 -04:00
Alex Soto 46eaabc17d [xcode14.3] Update bindings to Xcode 14.3 2023-03-29 14:37:51 -04:00
Rolf Bjarne Kvinge 8deec35a20
[net8.0] Remove support for .NET 6. (#17901)
Context: https://dotnet.microsoft.com/platform/support/policy/maui

> A major version of .NET MAUI receives support for a minimum of 6
> months after a successor (the next major release) ships. For
> example, .NET MAUI 6.0 will be supported for 6 months after .NET
> MAUI 7.0 ships. Similarly, .NET MAUI 7.0 will receive support for 6
> months after .NET MAUI 8.0 ships.

By the time .NET 8 GA ships, .NET 6 MAUI projects will not be supported.

Remove .NET 6 support from our .NET 8 workloads.
2023-03-29 10:25:25 +02:00
Peter Collins 8db2656990
Bump .NET 6 versions (#17780)
Context: https://devdiv.visualstudio.com/DevDiv/_git/VS/pullrequest/457579
Context: ff29c399d7

Bumps the net6.0 package versions to the latest versions in VS.
2023-03-14 10:12:40 +01:00
Rolf Bjarne Kvinge f710761ff7
[net8.0] Bump .NET 6 versions. (#17366) 2023-01-27 07:41:59 +01:00
Rolf Bjarne Kvinge aa0b00a560 Merge main into net8.0. 2022-12-21 11:17:12 +01:00
Alex Soto a7502b2b8d
[main] Bump bindings to Xcode 14.2 (#17037) 2022-12-21 08:39:03 +01:00
Rolf Bjarne Kvinge 1b664324f2
[net8.0] Bump .NET 6 versions. (#17025) 2022-12-15 12:47:40 +01:00
Rolf Bjarne Kvinge 2941b413ce
[maestro] Subscribe to the .NET 7 channel to get bumps for our own .NET 7 packages for .NET 8. (#16859)
We need the latest released version numbers for the previous .NET version so
that we can reference and consume those when building projects using the
corresponding target framework.

Luckily we have a system for keeping dependencies up-to-date, so let's use it
to notify the current branch for any updates to the release branch for the
previous .NET version.
2022-11-23 07:34:40 +01:00
Rolf Bjarne Kvinge 89b75b8ce1 Bump to net8.0 2022-11-04 09:41:56 +01:00
Rolf Bjarne Kvinge cdc62aeae9 Merge remote-tracking branch 'origin/net7.0-xcode14.1' into main-net7.0-xcode14.1 2022-11-03 08:21:55 +01:00
Rolf Bjarne Kvinge 6144ea4d78
[net7.0-xcode14.1] Bump .NET 6 versions. (#16483) 2022-10-26 23:06:12 +02:00
Rolf Bjarne Kvinge ec410e89b0
[net7.0-xcode14.1] Bump .NET 6 versions. (#16452) 2022-10-25 22:38:32 +02:00
Rolf Bjarne Kvinge 1c4ac4564d
[jenkins] Jenkins is dead, long live ~Wrench~ Azure Devops. (#16396)
Remove all Jenkins logic that's no longer being used.
2022-10-21 10:05:59 +02:00
Rolf Bjarne Kvinge 24f1fc18ed Merge remote-tracking branch 'origin/xcode14.1' into net7.0-xcode14.1 2022-10-20 19:30:22 +02:00
Rolf Bjarne Kvinge 469aad007f
Bump Xamarin.Mac to stable versioning. (#16382)
Then I had to bump the Xamarin.iOS version too, so that we have the same commit distance for both, otherwise this happens:

```
*** The commit distance for Xamarin.iOS (111) and Xamarin.Mac (0) are different.
*** To fix this problem, bump the revision (the third number) for both IOS_PACKAGE_NUMBER and MAC_PACKAGE_NUMBER in Make.versions.
*** Once fixed, you need to commit the changes for them to pass this check.
```
2022-10-19 15:32:05 +02:00
Alex Soto 27e6958b0a
[xcode14.1] Bump to Xcode 14.1 Beta 3 (#16010)
Co-authored-by: Rolf Bjarne Kvinge <rolf@xamarin.com>
Co-authored-by: Manuel de la Pena <mandel@microsoft.com>
2022-10-03 17:24:41 +02:00
Rolf Bjarne Kvinge ba64775ba7 [dotnet] Rework KnownFrameworkReference so that 'net6.0-*' TargetFrameworks work when building with .NET 7. Fixes #15375.
The KnownFrameworkReference now references the exact versions of the ref and runtime
packs we're shipping with the sdk pack, instead of telling the build to use whatever
version is defined in the workload.

Then in the workload we specify the latest released version of the .NET 6 for the
ref and runtime packs.

Finally we add an aliased sdk pack, which points to the .NET 6 sdk pack, and
when we're building a .NET 6 TargetFramework we load this aliased sdk pack
instead of the one we're shipping with this workload.

Putting this together means that:

* When we're building a .NET 7 TargetFramework, we load the sdk pack shipped
  with the workload, which adds a KnownFrameworkReference which references the
  ref and runtime packs with the same version as the sdk pack.
* When we're building a .NET 6 TargetFramework, we load the (aliased) sdk pack
  which points to the latest stable .NET 6 sdk pack. That sdk pack will add a
  KnownFrameworkReference that tells the build to use the ref and runtime pack
  versions specified in the workload - which are now pointing to the .NET 6
  ref and runtime pack versions.

Thus we use the .NET 6 sdk, ref and runtime packs when building a .NET 6
TargetFramework, and we use the .NET 7 sdk, ref and runtime packs when
building a .NET 7 TargetFramework.

According to the workload design spec [1], this is supposed to be implemented
by using aliased ref and runtime packs, but that doesn't work due to
https://github.com/dotnet/sdk/issues/26384.

Fixes https://github.com/xamarin/xamarin-macios/issues/15375.

[1]: https://github.com/dotnet/designs/blob/main/accepted/2020/workloads/workload-manifest.md?rgh-link-date=2022-06-30T08%3A25%3A10Z#side-by-side-workload-pattern
2022-08-26 13:36:35 +00:00
Alex Soto 174f9a2ea3
Bump versions to accomodate d17-3 release 2022-07-20 11:35:28 -04:00
Rolf Bjarne Kvinge 7bafd512b1 Bump version numbers. 2022-06-07 08:53:26 +02:00
Rolf Bjarne Kvinge d1b7606181
Adjust versioning scheme for .NET to make the third field the commit distance. (#14923)
Adjust our versioning scheme so that the NuGet version is
`Major.Minor.CommitDistance`. The previous scheme ("Major.Minor.<fixed-ish
version>") causes problems on branches producing stable builds, because each
new commit would end up with the same NuGet version, and we wouldn't be able
to push those to a NuGet feed because there might already be an existing
version there.

By using the commit distance in the NuGet version we ensure that every commit
has a different version.
2022-05-10 09:28:39 +02:00
Rolf Bjarne Kvinge 3dc90592b7
[dotnet] Use only the first two parts of our product version as the assembly version. (#14846)
This is a follow up to 92ee92eeb5, where we
changed the assembly version from four digits to three digits (i.e not include
the build number), because our managed API should be identical for (released)
versions where only the build number changes.

In this PR we go a bit further, because we're not supposed to have any API
differences unless the first two parts of the product version changes, which
means that we should only use need the two first parts of our product version
as the assembly version.
2022-05-03 10:07:11 +02:00
Rolf Bjarne Kvinge 9e3938784f
Stop branding main as a release branch for .NET. (#14822)
Also bump our version band to try to avoid confusion.
2022-04-26 17:12:38 +02:00
Alex Soto 0c1b7fb74b
Bump .NET in main to RC 3 2022-04-08 14:41:51 -04:00
Alex Soto 2650ec7f61 Bump versions to accomodate d17-2 release 2022-04-06 10:27:49 -04:00
Rolf Bjarne Kvinge 345a518239
Bump .NET in main to RC 2 (#14528) 2022-03-29 08:56:44 +02:00
Alex Soto bfa745a2b8 [xcode13.3] Use bump to main versioning 2022-03-15 10:23:45 -04:00
Alex Soto da31bc80a3 [xcode13.3] Bump to Xcode 13.3 RC 2022-03-14 22:54:34 -04:00
Alex Soto 35e2e45e98 [Xcode 13.3] Initial commit to Xcode 13.3 release 2022-03-14 22:54:33 -04:00
Rolf Bjarne Kvinge ed52b0f269
Bump .NET in main to RC 1 (#14277) 2022-03-01 17:01:55 +01:00
Alex Soto 972c978a01
Bump patch version > P13 2022-02-15 10:23:42 -05:00
Alex Soto 598499ffa7
Bump versions to help on the windows insertion and installer 2022-01-20 15:11:28 -05:00
Alex Soto 5b09d6320a
[main] Bump to next dev versions 2022-01-11 20:48:19 -05:00
Alex Soto dfe6c2b5ab
[main] Add Xcode 13.2 Support (#13643)
* [Xcode13.2] Bump to Xcode 13.2 RC (#13497)

* [Xcode13.2] Bump to Xcode 13.2 Beta 2

Breaking changes addressed for legacy
* HomeKit
* CallKit
* CoreLocation

* [xcode13.2] Bump to Xcode 13.2 RC and apply feedback

* [AppKit] Fix missing Notifications

* Fix xtro

* [xcode13.2] Bump versions and use stable Xcode 13.2

* [monotouch-tests] Make TestAddingByComponents work on the last day of the year

Happy New Year!!

* NO BOM PLZ!
2022-01-03 09:28:00 -05:00