e9d02f3f58
Previously DXamlCore and CoreServices used Lazy without explicit initializer parameter. While this worked for debug build, linker removed the "unused" parameterless constructors for these types and reflection then could not find and use them. Using the explicit initializer ensures the constructor is explicitly used and is not linked away. |
||
---|---|---|
.devcontainer | ||
.github | ||
build | ||
doc | ||
src | ||
.all-contributorsrc | ||
.codacy.yml | ||
.editorconfig | ||
.gitattributes | ||
.gitignore | ||
.gitpod.yml | ||
.mergify.yml | ||
.vsts-ci-docs.yml | ||
.vsts-ci.yml | ||
CODE_OF_CONDUCT.md | ||
CONTRIBUTING.md | ||
License.md | ||
README.md | ||
SECURITY.md | ||
THIRD-PARTY-NOTICES.md | ||
gitversion.yml |
README.md
Pixel-Perfect. Multi-Platform. C# & Windows XAML. Today.
What is the Uno Platform?
The Uno Platform is a UI Platform for building single-codebase applications for Windows, Web/WebAssembly, iOS, macOS, Android and Linux.
It allows C# and Windows XAML code to run on all target platforms, while allowing you control of every pixel. It comes with support for Fluent, Material and Cupertino design systems out of the box. Uno Platform implements a growing number of the UWP APIs, such as Windows.UI.Xaml, to enable UWP and WinUI applications to run on on all platforms with native performance.
Use the UWP/WinUI tooling from Windows in Visual Studio, such as XAML Hot Reload and C# Edit and Continue, build your application as much as possible on Windows, then validate that your application runs on iOS, Android, macOS and WebAssembly.
Visit our documentation for more details.
Getting Started
Prerequisites
- Visual Studio 2019 with:
- Universal Windows Platform component installed.
- Xamarin component installed (for Android and iOS development).
- ASP.NET/web component installed, along with .NET Core SDK 5.0 or later (for WebAssembly development).
To easily create a multi-platform application:
- See the complete Getting Started guides for starting with Visual Studio, Visual Studio Code, JetBrains Rider or Visual Studio Mac.
For a larger example and features demo:
- Visit the Uno Gallery repository.
- Try the WebAssembly Uno Playground live in your browser.
Uno Platform Features
- Supported platforms:
- Windows 10 (via the standard UWP Toolkit)
- Windows 7 (via Skia)
- iOS, macOS and Android (via Xamarin)
- WebAssembly through the .NET Runtime WebAssembly SDK
- Linux through Skia (Gtk and FrameBuffer)
- Dev loop:
- Develop on Windows first using Visual Studio
- XAML Edit and Continue for live XAML edition on each keystroke
- C# Edit and Continue
- Validate on other platforms as late as possible
- Experimental XAML Hot Reload for WebAssembly, iOS and Android
- Uno.UITest, a library to create Cross-Platform UI Tests for WebAssembly, iOS and Android.
- Cross Platform Controls:
- UWP/WinUI Code Support:
- Responsive Design:
- Platform Specific:
- Native controls and properties via conditional XAML
- Any of the existing Xamarin iOS/Android libraries available
- Xamarin.Forms Renderers:
Live WebAssembly Apps
Here's a list of live apps made with the Uno Platform for WebAssembly.
- The Uno Platform Playground (Source).
- The Uno Gallery demonstrating the use of Fluent and Material guidelines.
- The Uno Calculator, a simple yet powerful iOS/Android/WebAssembly C# port of the calculator that ships with Windows (Source). Also try the iOS version, the Android version and Linux version.
- The Ch9 sample educational application.
- The Xaml Controls Gallery (Source).
- SkiaSharp fork for the Uno Platform, Skia is a cross-platform 2D graphics API for .NET platforms based on Google's Skia Graphics Library (Source).
- The Uno.WindowsCommunityToolkit (Source).
- The Uno.Lottie, a sample that uses the AnimatedVisualPlayer (Source).
- The Uno.RoslynQuoter, a Roslyn based C# analysis tool (Source).
- The Uno.BikeSharing360 App, a Xamarin.Forms app running on top of Uno for WebAssembly (Source).
- The Uno.WindowsStateTriggers App, a demo of the Morten's WindowsStateTriggers (Source).
- The SQLite + Entity Framework Core App, a demo of the combination of Roslyn, Entity Framework Core, SQLite and the Uno Platform to manipulate an in-browser database.
- The Uno.WebSockets App, a demo of System.Net.WebSocket running from WebAssembly (Source).
- A WebAssembly AOT RayTracer.
Let us know if you've made your app publicly available, we'll list it here!
Have questions? Feature requests? Issues?
Make sure to visit our FAQ, StackOverflow, create an issue or Discord - "Uno-Platform" channel where our engineering and community are.
Contributing
There are many ways that you can contribute to the Uno Platform, as the WinRT and WinUI APIs are pretty large! Read our contributing guide to learn about our development process and how to propose bug fixes and improvements. Come visit us on our visit our Discord Channel #uno-platform for help on how to contribute!
Contribute to Uno in your browser using GitPod.io, follow our guide here.
Contributors
Thanks goes to these wonderful people (emoji key):
💖 Thank-you.