Upgrading NuGet System.Drawing.Common
to 6.0.0 causes the following error:
CA1416 This call site is reachable on all platforms. 'Image.FromStream(Stream)' is only supported on: 'windows'.
https://www.nuget.org/packages/System.Drawing.Common/
The affected code is the following:
var drawingImage = System.Drawing.Image.FromStream(memstr);
We use the library to access the method GetThumbnailImage
.
public byte[] GetThumbnailBytes(byte[] imageBytes)
{
var thumbnailBytes = Array.Empty<byte>();
using (MemoryStream memstr = new MemoryStream(imageBytes))
{
var drawingImage = System.Drawing.Image.FromStream(memstr);
var thumbnailSize = GetThumbnailSize(drawingImage);
var thumbnail = drawingImage.GetThumbnailImage(thumbnailSize.Width, thumbnailSize.Height, null, IntPtr.Zero);
var ms = thumbnail.ToStream(drawingImage.RawFormat);
thumbnailBytes = ms.ReadFully();
}
return thumbnailBytes;
}
We only host the application on Azure so targeting Windows is fine but replacing GetThumbnailImage
is acceptable as well.
Reading about the breaking change on Microsoft Docs and that we only target the Windows platform I decided to do the quickest path to victory for the moment and set Target OS to Windows
.
But this code won't warn if the project targets Windows
This has been an long open issue
I have got around it by editing my shared assembly info (not autogenerated) with
#if NET6_0
[assembly: System.Runtime.Versioning.SupportedOSPlatform("windows7.0")]
#endif
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.