IronBarcode - Alternative à System.Drawing.Common

This article was translated from English: Does it need improvement?
Translated
View the article in English

Iron Software a publié un logiciel libre remplaçant System.Drawing.Common. Pour en savoir plus sur IronDrawing, cliquez ici.

Démarrer avec .NET 6, System.Drawing.Common ne fonctionnera que sous Windows.

  • Sur les systèmes d'exploitation non Windows, à moins que vous ne définissiez un commutateur de configuration d'exécution, une exception TypeInitializationException est levée avec PlatformNotSupportedException en tant qu'exception interne.
  • Dans .NET 6, l'analyseur de plate-forme émet des avertissements au moment de la compilation lorsque le code de référencement est compilé pour des systèmes d'exploitation autres que Windows. En outre, l'exception d'exécution suivante est levée à moins que vous ne définissiez une option de configuration :
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()

Solution temporaire : Activez la prise en charge des plates-formes non Windows en définissant le commutateur de configuration d'exécution System.Drawing.EnableUnixSupport sur true dans le fichier runtimeconfig.json :

{
         "runtimeOptions": {
            "configProperties": {
               "System.Drawing.EnableUnixSupport": true
            }
         }
      }

Cette solution est la solution actuelle de Microsoft pour la prise en charge de System.Drawing dans .NET 6 :

https://docs.microsoft.com/en-us/dotnet/core/compatibility/core-libraries/6.0/system-drawing-common-windows-only