Bridges the worlds of .NET with the native APIs of macOS, iOS, tvOS, and watchOS.
Перейти к файлу
Rolf Bjarne Kvinge 8b888f0375
[dotnet] Rename packs to contain target framework. (#19765)
This is the first step towards [multi-targeting support][1]. In order to
support multi-targeting, it must be possible to install several versions of
our packs simultaneously, and that also means that it becomes a lot easier to
visualize and work with the version we want to support if the packs were named
in a helpful way.

In particular, this PR changes the sdk, ref and runtime pack names to contain
the target framework + target platform version.

This will be the new names:

* iOS

    * Microsoft.iOS.Sdk.net8.0_17.2
    * Microsoft.iOS.Ref.net8.0_17.2
    * Microsoft.iOS.Runtime.ios-arm64.net8.0_17.2
    * Microsoft.iOS.Runtime.iossimulator-arm64.net8.0_17.2
    * Microsoft.iOS.Runtime.iossimulator-x64.net8.0_17.2

* tvOS

    * Microsoft.tvOS.Sdk.net8.0_17.2
    * Microsoft.tvOS.Ref.net8.0_17.2
    * Microsoft.tvOS.Runtime.ios-arm64.net8.0_17.2
    * Microsoft.tvOS.Runtime.iossimulator-arm64.net8.0_17.2
    * Microsoft.tvOS.Runtime.iossimulator-x64.net8.0_17.2

* Mac Catalyst

    * Microsoft.MacCatalyst.Sdk.net8.0_17.2
    * Microsoft.MacCatalyst.Ref.net8.0_17.2
    * Microsoft.MacCatalyst.Runtime.maccatalyst-x64.net8.0_17.2
    * Microsoft.MacCatalyst.Runtime.maccatalyst-arm64.net8.0_17.2

* macOS

    * Microsoft.macOS.Sdk.net8.0_14.2
    * Microsoft.macOS.Ref.net8.0_14.2
    * Microsoft.macOS.Runtime.osx-x64.net8.0_14.2
    * Microsoft.macOS.Runtime.osx-arm64.net8.0_14.2

There are two main benefits to renaming the packs:

* It becomes a lot easier to understand which versions we support when we
  support multi-targeting. For example, say we want to support:

	* net8.0-ios17.0
	* net8.0-ios17.2
	* net9.0-ios18.0

    In this case we'd ship packs for `Microsoft.iOS.Sdk.net8.0_17.0`,
    `Microsoft.iOS.Sdk.net8.0_17.2`, `Microsoft.iOS.Sdk.net9.0_18.0` (the
    exact version number for each pack wouldn't be important).

    If we didn't change the pack names, we'd need to track the exact versions
    of the Microsoft.iOS.Sdk pack, mapping them to the correct target
    framework + target platform version we want to support.

* It'll be possible to add maestro subscriptions between versions. Given the
  previous example:

	* net8.0-ios17.0
	* net8.0-ios17.2
	* net9.0-ios18.0

	The branch producing `net9.0-ios8.0` could have a maestro subscription on
	the branches producing `net7.0-ios17.0` and `net7.0-ios17.2`,
	automatically bumping the versions whenever those branches have any
	changes.

	This would be rather annoying to keep track of and bump manually.

[1]: https://github.com/xamarin/xamarin-macios/blob/main/docs/multi-target-framework.md
2024-02-19 13:14:20 +01:00
.config [main] Update dependencies from dotnet/installer (#15119) 2022-05-26 08:51:49 +02:00
.github [actions] Give pull-requests:write permissions to the changelog editor/creator. (#20076) 2024-02-09 16:59:33 +01:00
Localize Update AOTCompile task to handle cycles in up-to-date check (#20103) 2024-02-15 17:29:18 +01:00
builds [dotnet] Differentiate between "OS version we support as TargetPlatformVersion" and "OS version we support or have supported". (#19882) 2024-01-23 19:17:25 +01:00
docs [src] Remove the Protocolize attribute. (#19684) 2024-01-11 16:23:15 +01:00
dotnet [dotnet] Rename packs to contain target framework. (#19765) 2024-02-19 13:14:20 +01:00
eng [main] Update dependencies from dotnet/installer (#20121) 2024-02-19 08:52:49 +01:00
external [Xamarin.MacDev] Bump to pick fixes for APIScan. (#19817) 2024-01-15 12:22:22 -05:00
fsharp Add config file for libmono-native dllmap 2019-03-13 00:34:47 +01:00
jenkins [jenkins] Jenkins is dead, long live ~Wrench~ Azure Devops. (#16396) 2022-10-21 10:05:59 +02:00
mk [ADR] Fix verbosity (#20055) 2024-02-09 09:47:27 -08:00
mono Add config file for libmono-native dllmap 2019-03-13 00:34:47 +01:00
msbuild Update AOTCompile task to handle cycles in up-to-date check (#20103) 2024-02-15 17:29:18 +01:00
release [dotnet] Rename packs to contain target framework. (#19765) 2024-02-19 13:14:20 +01:00
runtime [runtime] Use objc_[retain|release|autorelease] instead of sending messages. (#19415) 2023-11-14 07:42:55 +01:00
src [Accessibility] Make P/Invokes have blittable signatures. (#20124) 2024-02-16 16:52:39 +01:00
tests [Tests] Fix trim warnings tests (#20132) 2024-02-18 10:05:31 -05:00
tools [dotnet] Rename packs to contain target framework. (#19765) 2024-02-19 13:14:20 +01:00
.editorconfig Update editorconfig. (#19909) 2024-01-26 08:24:58 +01:00
.gitattributes [dotnet] Fix line endings in template localizations. (#16981) 2022-12-12 17:12:35 +01:00
.gitignore [net8.0] [build] Require using EnablePreviewFeatures=true when using preview releases. Contributes towards #18343. (#18476) 2023-06-22 08:16:50 +02:00
.gitmodules [Build] Update submodules remotes. (#19632) 2023-12-18 11:45:25 -05:00
CODEOWNERS [WebKit] Merge WKWebKit into WebKit. (#17062) 2022-12-19 18:37:53 +01:00
DOWNLOADS.md Update DOWNLOADS.md with new releases. (#19595) 2023-12-11 08:47:13 +01:00
Directory.Build.props Get Mono.Cecil from NuGet everywhere. (#19535) 2023-12-04 20:15:03 +01:00
ISSUE_TEMPLATE.md Add newlines to issue template to fix markdown formatting problems. (#15152) 2022-05-31 18:43:01 +02:00
LICENSE Adjust license to match requested format 2016-04-25 16:38:57 -04:00
Make.config [dotnet] Rename packs to contain target framework. (#19765) 2024-02-19 13:14:20 +01:00
Make.versions [dotnet] Add warning when the TargetPlatformVersion isn't supported (#19901) 2024-01-25 09:23:03 +01:00
Makefile [build] Add support for worktree checkouts (#19240) 2023-10-19 09:22:37 -07:00
NOTICE.txt Add NOTICE.txt and cgmanifest tool (#8843) 2020-06-12 14:30:21 -05:00
NuGet.config [main] Update dependencies from dotnet/installer (#20121) 2024-02-19 08:52:49 +01:00
README.md [Readme] Update link to the forums. (#19361) 2023-10-26 19:28:51 +02:00
SECURITY.MD Add SECURITY.MD to repo (as suggested by OSPO) (#7019) 2019-09-19 17:44:22 -04:00
Versions-ios.plist.in [Xcode 15.2] Bump to Xcode 15.2 (#19785) 2024-01-12 04:56:22 -05:00
Versions-mac.plist.in [Xcode 15.2] Bump to Xcode 15.2 (#19785) 2024-01-12 04:56:22 -05:00
Xamarin.Mac.sln Fix path to dont link project in Xamarin.Mac.sln. (#8109) 2020-03-16 09:42:52 +01:00
Xamarin.iOS.sln [tests] Make the mtouch test project reference the actual mtouch project. (#11400) 2021-05-04 14:10:03 +02:00
banner.png [README] Add Xamarin.iOS + Xamarin.Mac banner (#1665) 2017-02-08 17:42:48 -05:00
configure convert to if ... fi 2023-11-30 21:58:56 -05:00
create-make-config.sh Encode the .NET version we're targeting in the third NuGet version number. (#17818) 2023-03-17 07:39:59 +01:00
global.json [main] Update dependencies from dotnet/installer (#20121) 2024-02-19 08:52:49 +01:00
mac-entitlements.plist Implement notarization. (#6928) 2019-09-09 00:34:11 -07:00
product.snk Add our mono runtimes to the build. 2016-04-24 14:47:24 -04:00
system-dependencies.sh Update Homebrew install URL (#19968) 2024-02-05 10:03:21 -05:00
versions-check.csharp [dotnet] Differentiate between "OS version we support as TargetPlatformVersion" and "OS version we support or have supported". (#19882) 2024-01-23 19:17:25 +01:00

README.md

Xamarin.iOS + Xamarin.Mac logo

Xamarin.iOS & Xamarin.Mac

Welcome!

This module is the main repository for both Xamarin.iOS and Xamarin.Mac.

These SDKs allow us to create native iOS, tvOS, watchOS and macOS applications using the same UI controls we would in Objective-C and Xcode, except with the flexibility and elegance of a modern language (C#), the power of the .NET Base Class Library (BCL), and two first-class IDEs—Visual Studio for Mac and Visual Studio—at our fingertips.

This repository is where we do development for the Xamarin.iOS and Xamarin.Mac SDKs. There are a few ways that you can contribute, for example:

Contributing

If you are interested in fixing issues and contributing directly to the code base, please see the document How to Contribute, which covers the following:

Downloads

The preferred method for installing Xamarin.iOS and Mac is to use the Visual Studio installers (Windows, Mac).

The team also strongly recommends using the latest Xamarin SDK and Xcode whenever possible.

However, we provide links to older Xamarin.iOS and Mac packages for macOS downgrades and build machine configuration, see Downloads.

Feedback

Discord

License

Copyright (c) .NET Foundation Contributors. All rights reserved. Licensed under the MIT License.