diff --git a/docs/core/compatibility/core-libraries/6.0/system-drawing-common-windows-only.md b/docs/core/compatibility/core-libraries/6.0/system-drawing-common-windows-only.md index c6c7e0df73dd6..5fee000e1ed09 100644 --- a/docs/core/compatibility/core-libraries/6.0/system-drawing-common-windows-only.md +++ b/docs/core/compatibility/core-libraries/6.0/system-drawing-common-windows-only.md @@ -46,7 +46,7 @@ Because `System.Drawing.Common` was designed to be a thin wrapper over Windows t `libgdiplus` is the main provider of the cross-platform implementation of `System.Drawing.Common` on the native side. `libgdiplus` is effectively a reimplementation of the parts of Windows that `System.Drawing.Common` depends on. That implementation makes `libgdiplus` a non-trivial component. It's around 30,000 lines of C code that's largely untested, and it lacks a lot of functionality. `libgdiplus` also has numerous external dependencies for image processing and text rendering, such as `cairo`, `pango`, and other native libraries. Those dependencies make maintaining and shipping the component even more challenging. Since the inclusion of the Mono cross-platform implementation, we have redirected numerous issues to `libgdiplus` that never got fixed. In comparison, other external dependencies we have taken, such as `icu` or `openssl`, are high-quality libraries. It's not viable to get `libgdiplus` to the point where its feature set and quality is on par with the rest of the .NET stack. -From analysis of NuGet packages, we've observed that `System.Drawing.Common` is used cross-platform mostly for image manipulation, such as QR code generators and text rendering. We haven't noticed heavy graphics usage, as our cross-platform graphics support is incomplete. The usages we see of `System.Drawing.Common` in non-Windows environments are typically well supported with SkiaSharp and ImageSharp. +From analysis of NuGet packages, we've observed that `System.Drawing.Common` is used cross-platform mostly for image manipulation, such as QR code generators and text rendering. We haven't noticed heavy graphics usage, as our cross-platform graphics support is incomplete. The usages we see of `System.Drawing.Common` in non-Windows environments are typically well supported with SkiaSharp. `System.Drawing.Common` will continue to evolve only in the context of Windows Forms and GDI+. @@ -54,11 +54,12 @@ From analysis of NuGet packages, we've observed that `System.Drawing.Common` is To use these APIs for cross-platform apps, migrate to one of the following libraries: -- [ImageSharp](https://github.com/SixLabors/ImageSharp) - [SkiaSharp](https://github.com/mono/SkiaSharp) - [Microsoft.Maui.Graphics](https://github.com/dotnet/Microsoft.Maui.Graphics) -Alternatively, you can enable support for non-Windows platforms in .NET 6 by setting the `System.Drawing.EnableUnixSupport` [runtime configuration switch](../../../runtime-config/index.md) to `true` in the *runtimeconfig.json* file: +Alternatively, you can enable support for non-Windows platforms in .NET 6 by setting the `System.Drawing.EnableUnixSupport` [runtime configuration switch](../../../runtime-config/index.md) to `true` in the *runtimeconfig.json* file. + +*runtimeconfig.template.json* template file: ```json { @@ -68,7 +69,22 @@ Alternatively, you can enable support for non-Windows platforms in .NET 6 by set } ``` -This configuration switch was added to give cross-platform apps that depend heavily on this package time to migrate to more modern libraries. However, non-Windows bugs will not be fixed. In addition, this switch has been removed in .NET 7. +*[appname].runtimeconfig.json* output file: + +```json +{ + "runtimeOptions": { + "configProperties": { + "System.Drawing.EnableUnixSupport": true + } + } +} +``` + +> [!NOTE] +> +> - This configuration switch was added to give cross-platform apps that depend heavily on this package time to migrate to more modern libraries. However, non-Windows bugs will not be fixed. +> - This switch is only available in .NET 6. ## Affected APIs