IronBarcode - Alternativa a System.Drawing.Common
Iron Software tiene un reemplazo de código abierto para System.Drawing.Common llamado IronDrawing. Más información sobre IronDrawing,pulse aquí.
A partir de .NET 6,System.Drawing.Common solo funcionará en Windows.
- En sistemas operativos que no sean Windows, a menos que establezcas un interruptor de configuración de tiempo de ejecución, se lanza una excepción
TypeInitializationException
conPlatformNotSupportedException
como la excepción interna. - En .NET 6, el analizador de plataformas emite advertencias en tiempo de compilación cuando se compila código de referencia para sistemas operativos distintos de Windows. Además, se lanza la siguiente excepción en tiempo de ejecución a menos que establezca una opción de configuración:
System.TypeInitializationException : The type initializer for 'Gdip' threw an exception.
---- System.PlatformNotSupportedException : System.Drawing.Common is not supported on non-Windows platforms. See https://aka.ms/systemdrawingnonwindows for more information.
Stack Trace:
at System.Drawing.SafeNativeMethods.Gdip.GdipCreateBitmapFromFile(String filename, IntPtr& bitmap)
/_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(42,0): at System.Drawing.Bitmap..ctor(String filename, Boolean useIcm)
/_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(25,0): at System.Drawing.Bitmap..ctor(String filename)
/_/src/libraries/System.Resources.ResourceManager/tests/ResourceManagerTests.cs(270,0): at System.Resources.Tests.ResourceManagerTests.EnglishImageResourceData()+MoveNext()
/_/src/libraries/System.Linq/src/System/Linq/Select.cs(136,0): at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext()
----- Inner Stack Trace -----
/_/src/libraries/System.Drawing.Common/src/System/Drawing/LibraryResolver.cs(31,0): at System.Drawing.LibraryResolver.EnsureRegistered()
/_/src/libraries/System.Drawing.Common/src/System/Drawing/GdiplusNative.Unix.cs(65,0): at System.Drawing.SafeNativeMethods.Gdip.PlatformInitialize()
/_/src/libraries/System.Drawing.Common/src/System/Drawing/Gdiplus.cs(27,0): at System.Drawing.SafeNativeMethods.Gdip..cctor()
Solución temporal: habilite el soporte para plataformas no Windows configurando el interruptor de configuración de tiempo de ejecución System.Drawing.EnableUnixSupport
en true en el archivo runtimeconfig.json:
{
"runtimeOptions": {
"configProperties": {
"System.Drawing.EnableUnixSupport": true
}
}
}
Esta solución es la solución actual de Microsoft para el soporte de System.Drawing en .NET 6:
https://docs.microsoft.com/en-us/dotnet/core/compatibility/core-libraries/6.0/system-drawing-common-windows-only