OpenSilver

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
OpenSilver
Other namesCSHTML5
DeveloperUserware
Initial releaseMarch 9, 2020; 6 years ago (2020-03-09)
Stable release
3.2 / March 18, 2025; 12 months ago (2025-03-18)[1]
Repository
  • {{URL|example.com|optional display text}}Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
Written inC#
Engine
    Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
    Operating systemCross-platform
    Platform.NET, WebAssembly
    Available inEnglish
    TypeSoftware framework
    LicenseMIT License

    OpenSilver (formerly CSHTML5 or C#/XAML for HTML5) is an open-source framework designed to facilitate the development of rich internet applications (RIAs) using C# and XAML. It was developed as a successor to Microsoft Silverlight, enabling developers to migrate existing Silverlight applications to the web without rewriting their codebase. This framework is built on current web standards, including HTML5, CSS3, and WebAssembly, ensuring broad compatibility across modern web browsers regardless of the operating system without requiring plugins.

    OpenSilver is a community-driven project that is freely available for anyone to use, modify, or improve. It operates under the MIT license. It is compatible with Microsoft's .NET platform, allowing developers to use C#, VB.NET,[2] F#,[3] and XAML for application development, thereby maintaining a familiar development experience for those from a Silverlight or WPF background. Over the past two years, OpenSilver's release 2.2[4] has positioned itself as an advanced web framework designed for line-of-business applications.

    Until the end of 2024, releases 3.0 and the version 3.1[5] bring several key features such as XAML designer for Visual Studio Code, improvements of WPF support, and support for .NET 9.

    As of March 2025, OpenSilver version 3.2[6] introduces support for porting Silverlight and WPF applications to web, mobile, and non-Windows desktop platforms.

    History

    [edit | edit source]

    In 2014, Userware, founded in 2007 and led by Giovanni Albani,[7] launched CSHTML5,[8] a precursor to becoming OpenSilver. This initiative began efforts to provide a contemporary alternative to Microsoft Silverlight in 2020,[9] focusing on open-source development. As technology progressed and the need for modern web application frameworks grew, CSHTML5 evolved, culminating in the creation of OpenSilver 1.0 in October 2021.[10] OpenSilver aimed to seamlessly integrate Silverlight's legacy capabilities with the demands of modern web development.

    The inception of OpenSilver was motivated by the discontinuation of Silverlight and the need for a robust solution that allows legacy Silverlight applications to continue functioning in a modern web environment.[11] By providing a path forward for these applications, OpenSilver helps preserve the investment made in Silverlight-based projects while taking advantage of the advancements in web technology.

    Version history and milestones

    [edit | edit source]
    OpenSilver releases[12]
    Version Release date Notes
    Unsupported: Technology Preview March 9, 2020 /
    Unsupported: Beta September 13, 2021 /
    Unsupported: 1.0 October 12, 2021 /
    Unsupported: 1.1 October 4, 2022 Support for third-party libraries, including Telerik UI for Silverlight.
    Unsupported: 2.0 October 16, 2023 Support for the VB.NET programming language.
    Unsupported: 2.1 February 6, 2024 Support for the F# programming language and integration of the Microsoft Silverlight Toolkit.
    Unsupported: 2.2 April 23, 2024 Support for Visual Studio LightSwitch.
    Supported: 3.0 July 10, 2024 AI-powered XAML designer and supports Windows, Linux, and Mac. OpenSilver CLI.
    Supported: 3.1 December 10, 2024 XAML designer for Visual Studio Code, improvements of WPF support, new UI theme, and .NET 9 support.
    Latest version: 3.2 March 18, 2025 Integrates .NET MAUI Hybrid, enabling WPF-compatible apps on multiple platforms from a single codebase.
    Legend:
    Unsupported
    Supported
    Latest version

    Technology

    [edit | edit source]
    OpenSilver: The primary logical components: Compiler and Runtime
    OpenSilver: The primary logical components: Compiler and Runtime

    OpenSilver integrates three main components:

    1. Compiler - Converts XAML into C# equivalents and copies resources, such as images, to the output folder.
    2. Runtime - Bridges the HTML DOM and the XAML code.
    3. Simulator - Allows developers to debug OpenSilver web applications like desktop applications.

    OpenSilver's foundation is its ability to take .NET assemblies and XAML files (the building blocks of Silverlight applications) as input and use Blazor to compile them in WebAssembly.

    Compilation process

    [edit | edit source]
    • XAML to C# conversion - Converts XAML files into C# classes, preserving the layout and styling of Silverlight applications.
    • .NET to WebAssembly execution - NET assemblies, which include C#, VB.NET, and F# code, can execute in web browsers through two primary modes supported by Mono for WebAssembly: interpreter mode and Ahead-of-Time (AOT) compilation.

    Runtime environment

    [edit | edit source]
    • WebAssembly Runtime - The compiled code runs within the browser's WebAssembly runtime, generating HTML, CSS, and JavaScript to render the application.
    • JavaScript Interoperability - A JavaScript layer bridges WebAssembly and the browser's native functions, allowing access to browser APIs that are not directly accessible via WebAssembly.
    • HTML/CSS Renderer - The browser renders the converted HTML and CSS, including the visual layout, styles, and interactive elements defined in the original XAML.

    Development and debugging

    [edit | edit source]
    • Facilitate development and testing - The simulator provides a robust and accurate environment mimicking Silverlight's behavior, aiding the transition from Silverlight to OpenSilver.

    High-level architecture of OpenSilver

    [edit | edit source]
    OpenSilver: Top-level architectural diagram
    OpenSilver: Top-level architectural diagram
    • Blazor web app (C#) - The entry point creates an OpenSilver application instance and runs the code in WebAssembly.
    • OpenSilver app (C#, VB, F#, and XAML) - Integrates several mechanisms to run converted Silverlight applications on standard web technologies in modern browsers without plugins.

    Development tools

    [edit | edit source]

    OpenSilver offers development tools and a software development kit (SDK[13]) to aid application development. These tools include Visual Studio project templates and the OpenSilver Simulator, simplifying the workflow for developers accustomed to Silverlight or .NET environments.

    Supported IDE

    [edit | edit source]
    Product name Code name Version number .NET Framework .NET (formerly .NET Core)
    Visual Studio 2019 Dev16 16.0 Only to run the OpenSilver simulator application 6.0
    Visual Studio 2022 Dev17 17.0 Only to run the OpenSilver simulator application 6.0, 7.0, Recommended: 8.0, 9.0
    Product name Operating System .NET (formerly .NET Core)
    Visual Studio Code Windows, Linux, MacOS 7.0, Recommended: 8.0, 9.0

    NOTE: OpenSilver CLI is supported since OpenSilver 3.0. It allows the creation and manipulation of OpenSilver projects with Command-line interface, which makes it convenient for users to use their preferred code editors for software development.

    Licensing

    [edit | edit source]

    OpenSilver is licensed under the MIT License, which allows users to freely use, modify, distribute, and sell the software as long as they include the original copyright and permission notices.

    See also

    [edit | edit source]

    Lua error in mw.title.lua at line 392: bad argument #2 to 'title.new' (unrecognized namespace name 'Portal').

    References

    [edit | edit source]
    1. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    2. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    3. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    4. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).; Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).; Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).; Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).; Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    5. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).; Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).; Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    6. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).; Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).; Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    7. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    8. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    9. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).; Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).; Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).; Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    10. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).; Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).; Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).; Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    11. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    12. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    13. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).

    Further reading

    [edit | edit source]
    [edit | edit source]
    • Lua error in Module:Official_website at line 94: attempt to index field 'wikibase' (a nil value).
    • OpenSilver on GitHub

    Documentation and resources

    [edit | edit source]
    • Official Documentation - Provides an overview of OpenSilver, including how to get started, migration strategies, and detailed technical information.
    • Tutorials and Guides - Accessible on GitHub, along with sample projects, examples, and helper tools.
    • Community Forums and Support - Discussions on GitHub Issues.
    • OpenSilver Showcase (Samples Explorer) - 200+ interactive C#, VB.NET, and F# samples to learn XAML, .NET, and OpenSilver on OpenSilver Showcase.
    • Official Announcements - RSS Feed - https://opensilver.net/pagefeed/