QRCoder icon indicating copy to clipboard operation
QRCoder copied to clipboard

QRCode class is missing under Linux since 1.4.3

Open WhiteFossa opened this issue 2 years ago • 4 comments

Type of issue

Bug, showstopper-class

Expected Behavior

Code (see below) compiles

Current Behavior

You'll get an error about "class QRCode is not defined".

Possible Solution (optional)

Probably to change something near the #if NET6_0_WINDOWS [System.Runtime.Versioning.SupportedOSPlatform("windows")] #endif

Steps to Reproduce (for bugs)

Just use a simplest code from example:

QRCodeGenerator qrGenerator = new QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.CreateQrCode("The text which should be encoded.", QRCodeGenerator.ECCLevel.Q); QRCode qrCode = new QRCode(qrCodeData); Bitmap qrCodeImage = qrCode.GetGraphic(20);

and try to compile in under Linux and .NET 6.0

Your Environment

  • Version used: 1.4.3
  • Compiled from source or NuGet package?: NuGet
  • Payload/Encoded text:
  • Used payload generator:
  • Used ECC-level:
  • Used renderer class:
  • Environment (.NET 3.5, .NET 4.X, .NETCore, ...): .NET Core 6 under Fedora 37

WhiteFossa avatar Jan 24 '23 04:01 WhiteFossa

I have the same issue with windows and .NET 6 in 1.4.3. Downgrading to 1.4.2 solves the issue.

user-named-void avatar Jan 26 '23 07:01 user-named-void

I have the same issue on .NET 6 on version 1.4.3

Only upgraded to QRCoder 1.4.3 via a Snyk PR - apparently v1.4.2 has RCE exploit possible: https://security.snyk.io/vuln/SNYK-DOTNET-SYSTEMDRAWINGCOMMON-3063427

OptimusPi avatar Jan 31 '23 00:01 OptimusPi

p.s. There is an issue that talks about this, read here: https://github.com/codebude/QRCoder/issues/361#issuecomment-992152570

OptimusPi avatar Jan 31 '23 01:01 OptimusPi

@user-named-void So am I. According to what you said, demoting to 1.4.2 is indeed possible

Jesn avatar Jul 03 '23 07:07 Jesn

Microsoft removed System.Drawing support in .NET 6 for non-Windows platforms. Since the QRCode renderer uses System.Drawing, it's correct that it isn't supported on Linux. But that must not be a problem as there are other rendering classes that are supported on non-Windows platforms. Check the compatibility matrix to find a renderer that fits your platform/environment: https://github.com/codebude/QRCoder/wiki/Advanced-usage---QR-Code-renderers#2-overview-of-the-different-renderers

Long-term we plan to move away from System.Drawing and replace it by another graphics library.

codebude avatar Apr 27 '24 21:04 codebude