11. Windows のみサポート
.NET6 における破壊的変更のひとつ
(背景)C 言語で書かれている GDI+(libgdiplus)ライブラリの 30,000 行がテス
トされていない
.NET5 では Linux/Mac でもとりあえず動作していた
AppService / Azure Functions では未サポート
System.Drawing.Common will continue to evolve only in the context of
Windows Forms and GDI+.
Azure Web App sandbox
【オンライン】.NET 6 移行祭り! C# Tokyo イベント 2022.8.26
copyright 2022 @masatoru 11
12. Windows でビルドすると警告が出力される
warning CA1416: This call site is reachable on all platforms.
'Bitmap' is only supported on: 'windows'.
<TargetFramework>net6.0-windows</TargetFramework> で警告を消去可能
Linux では実行時にエラー(ビルドはできる)
The type initializer for 'Gdip' threw an exception.
System.Drawing.Common is not supported on non-Windows platforms.
Linux でも .NET Runtime configuration settings で
"System.Drawing.EnableUnixSupport": true とすれば .NET6 でも動作する(とド
キュメントにはあるが試した限りでは動作しない)
.NET 7 ではこのスイッチは削除される
【オンライン】.NET 6 移行祭り! C# Tokyo イベント 2022.8.26
copyright 2022 @masatoru 12
15. ImageSharp
A modern, cross-platform, 2D Graphics library for .NET
商用サポートあり
【オンライン】.NET 6 移行祭り! C# Tokyo イベント 2022.8.26
copyright 2022 @masatoru 15
16. SkiaSharp
SkiaSharp is a cross-platform 2D graphics API for .NET platforms based on
Google's Skia Graphics Library. It provides a comprehensive 2D API that can
be used across mobile, server and desktop models to render images.
Building on Linux
<PackageReference Include="SkiaSharp" Version="2.88.1" />
<PackageReference Include="SkiaSharp.NativeAssets.Linux.NoDependencies" Version="2.88.1" />
<PackageReference Include="SkiaSharp.NativeAssets.Linux" Version="2.88.1" />
【オンライン】.NET 6 移行祭り! C# Tokyo イベント 2022.8.26
copyright 2022 @masatoru 16
17. Microsoft.Maui.Graphics
An experimental cross-platform native graphics library.
Goals
No dependencies on System.Drawing
Support all graphics operations within an abstraction that the underlying
abstraction supports.
モバイルやアプリ向け(サーバー向けでは無い?)
Font が効かない canvas.Font = new Font("MS UI Gothic", 50);
https://github.com/dotnet/Microsoft.Maui.Graphics/issues/451
【オンライン】.NET 6 移行祭り! C# Tokyo イベント 2022.8.26
copyright 2022 @masatoru 17
18. 参考資料
.NET 6 での破壊的変更
単一ファイルの配置と実行可能ファイル
System.Drawing.Common が Windows でしかサポートされない
Make System.Drawing.Common only supported on Windows
Win32k.sys (User32/GDI32) Restrictions
github: Microsoft.Maui.Graphics
Maui.Graphics
【オンライン】.NET 6 移行祭り! C# Tokyo イベント 2022.8.26
copyright 2022 @masatoru 18