PolySharp 1.1.0
See the version list below for details.
dotnet add package PolySharp --version 1.1.0
NuGet\Install-Package PolySharp -Version 1.1.0
<PackageReference Include="PolySharp" Version="1.1.0" />
paket add PolySharp --version 1.1.0
#r "nuget: PolySharp, 1.1.0"
// Install PolySharp as a Cake Addin #addin nuget:?package=PolySharp&version=1.1.0 // Install PolySharp as a Cake Tool #tool nuget:?package=PolySharp&version=1.1.0
What is it? 🚀
PolySharp provides Source-only polyfills for C# language features, to easily use all runtime-agnostic features downlevel. The package is distributed as a source generator, so that it will automatically detect which polyfills are needed depending on the target framework and project in use: just add a reference to PolySharp, set your C# language version to latest, and have fun!
Documentation 📖
PolySharp includes the following polyfills:
- Nullability attributes (for nullable reference types):
[AllowNull]
[DisallowNull]
[DoesNotReturn]
[DoesNotReturnIf]
[MaybeNull]
[MaybeNullWhen]
[MemberNotNull]
[MemberNotNullWhen]
[NotNull]
[NotNullIfNotNull]
[NotNullWhen]
Index
andRange
(see indices and ranges)[UnscopedRef]
(see low-level struct improvements)- Required members (see required modifier)
[RequiredMember]
[SetsRequiredMembers]
[CompilerFeatureRequired]
(needed to support several features)[IsExternalInit]
(needed for init-only properties)[SkipLocalsInit]
(see docs)- Interpolated string handlers (see docs)
[InterpolatedStringHandler]
[InterpolatedStringHandlerArgument]
[CallerArgumentExpression]
(see docs)
To leverage them, make sure to bump your C# language version. You can do this by setting the <LangVersion>
MSBuild property in your project. For instance, by adding <LangVersion>11.0</LangVersion>
(or your desired C# version) to the first <PropertyGroup>
of your .csproj file. For more info on this, see here, but remember that you don't need to manually copy polyfills anymore: simply adding a reference to PolySharp will do this for you automatically.
It also includes the following optional runtime-supported polyfills:
- Reflection annotation attributes (see docs):
[DynamicallyAccessedMembers]
[DynamicDependency]
[RequiresUnreferencedCode]
[UnconditionalSuppressMessage]
[StackTraceHidden]
(see here)[UnmanagedCallersOnly]
(see docs))- Platform support annotation attributes (see docs):
[ObsoletedOSPlatform]
[SupportedOSPlatform]
[SupportedOSPlatformGuard]
[TargetPlatform]
[UnsupportedOSPlatform]
[UnsupportedOSPlatformGuard]
Options ⚙️
PolySharp's generation can be configured through some MSBuild properties to set in consuming projects.
The following properties are available:
- "PolySharpUsePublicAccessibilityForGeneratedTypes": changes the accessibility of generated types from
internal
topublic
. - "PolySharpIncludeRuntimeSupportedAttributes": enables polyfills for (dummy) runtime-supported attributes too.
Learn more about Target Frameworks and .NET Standard.
This package has no dependencies.
NuGet packages (26)
Showing the top 5 NuGet packages that depend on PolySharp:
Package | Downloads |
---|---|
AdaptiveCards.Templating
This library implements a JSON-to-JSON templating/data-binding engine. While it is designed to be used with Adaptive Cards, it is not dependent on Adaptive Cards and can therefore be used in many contexts and applications. |
|
TinyLogger
Tiny extendable logger that plugins into Microsoft.Extensions.Logging |
|
K4os.Xpovoc.Core
Simple job scheduler for .NET/.NET Core |
|
Disarm
Pure-C# Disassembler for the ARM64 Instruction Set |
|
aqua.tool.Validation
Provides C# source generated extension methods for argument validation. |
GitHub repositories (126)
Showing the top 5 popular GitHub repositories that depend on PolySharp:
Repository | Stars |
---|---|
files-community/Files
A modern file manager that helps users organize their files and folders.
|
|
restsharp/RestSharp
Simple REST and HTTP API Client for .NET
|
|
unoplatform/uno
Open-source platform for building cross-platform native Mobile, Web, Desktop and Embedded apps quickly. Create rich, C#/XAML, single-codebase apps from any IDE. Hot Reload included! 90m+ NuGet Downloads!!
|
|
lepoco/wpfui
WPF UI provides the Fluent experience in your known and loved WPF framework. Intuitive design, themes, navigation and new immersive controls. All natively and effortlessly.
|
|
serilog/serilog
Simple .NET logging with fully-structured events
|
Version | Downloads | Last updated |
---|---|---|
1.14.1 | 1,926,058 | 12/18/2023 |
1.14.0 | 45,046 | 11/28/2023 |
1.13.2 | 686,250 | 5/16/2023 |
1.13.1 | 99,246 | 4/6/2023 |
1.12.1 | 341,210 | 1/21/2023 |
1.10.0 | 399,740 | 1/15/2023 |
1.9.0 | 2,293 | 1/14/2023 |
1.8.3 | 12,688 | 1/9/2023 |
1.8.2 | 174 | 1/8/2023 |
1.8.1 | 23,358 | 11/22/2022 |
1.8.0 | 831 | 11/16/2022 |
1.7.1 | 28,984 | 10/29/2022 |
1.7.0 | 159 | 10/28/2022 |
1.6.0 | 345 | 10/26/2022 |
1.5.0 | 153 | 10/26/2022 |
1.4.0 | 155 | 10/25/2022 |
1.3.0 | 323 | 10/23/2022 |
1.2.0 | 145 | 10/22/2022 |
1.1.0 | 144 | 10/22/2022 |
1.0.1 | 144 | 10/22/2022 |
1.0.0 | 4,170 | 10/22/2022 |