Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1.5K
Vistas
NuGet System.Drawing.Common .NET 6 CA1416 Se puede acceder a este sitio de llamadas en todas las plataformas. 'Image.FromStream(Stream)' solo es compatible con: 'windows'

La actualización de NuGet System.Drawing.Common a 6.0.0 provoca el siguiente error:

CA1416 Se puede acceder a este sitio de llamadas en todas las plataformas. 'Image.FromStream(Stream)' solo se admite en: 'windows'.

https://www.nuget.org/packages/System.Drawing.Common/

El código afectado es el siguiente:

 var drawingImage = System.Drawing.Image.FromStream(memstr);

Usamos la biblioteca para acceder al método 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; }

Solo alojamos la aplicación en Azure, por lo que apuntar a Windows está bien, pero también es aceptable reemplazar GetThumbnailImage .

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Actualizar:

Apuntar a Windows funcionó bien hasta que uno de nuestros desarrolladores intentó iniciar la solución en su computadora Apple usando Visual Studio 2022 for Mac Preview 1 .

https://docs.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1416

Leer .NET 6 Cambios importantes Microsoft tiene una sección sobre System.Drawing.Common .

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

Sus recomendaciones son las siguientes:

Para usar estas API para aplicaciones multiplataforma, migre a una de las siguientes bibliotecas:

  • Imagen nítida
  • SkiaSharp
  • Microsoft.Maui.Graphics

Como alternativa, puede habilitar la compatibilidad con plataformas que no sean de Windows configurando el conmutador de configuración de tiempo de ejecución System.Drawing.EnableUnixSupport en verdadero en el archivo runtimeconfig.json:

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

Este cambio de configuración se agregó para dar tiempo a las aplicaciones multiplataforma que dependen en gran medida de este paquete para migrar a bibliotecas más modernas. Sin embargo, los errores que no sean de Windows no se corregirán. Además, es posible que eliminemos por completo la compatibilidad con plataformas que no sean de Windows en una versión futura, incluso si lo habilita mediante el interruptor de configuración de tiempo de ejecución.

Nota

A pesar del nombre del modificador de tiempo de ejecución, System.Drawing.EnableUnixSupport, se aplica a varias plataformas que no son de Windows, como macOS y Android, que generalmente pueden considerarse variantes de Unix.

Aunque Microsoft.Maui.Graphics está en versión preliminar y se considera una biblioteca experimental, traté de usarla dado que Microsoft tiene la biblioteca como biblioteca de acción recomendada.

Parecía realmente prometedor al principio, pero luego encontré un error en su método IImage Downsize .

https://github.com/dotnet/Microsoft.Maui.Graphics/issues/247

Hasta que eso se solucione, mi solución temporal es usar Target framework .NET 6, Target OS (ninguno) y luego usar Exclude specific warnings as errors dado que hemos habilitado Treat warnings as errors .

ingrese la descripción de la imagen aquí

También he creado un runtimeconfig.template.json en la raíz de nuestro proyecto web con los siguientes valores:

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

Original:

Después de leer sobre el cambio de última hora en Microsoft Docs y dado que solo apuntamos a la plataforma Windows, decidí hacer el camino más rápido hacia la victoria por el momento y configurar Target OS en Windows .

ingrese la descripción de la imagen aquí

Pero este código no avisará si el proyecto apunta a Windows

https://docs.microsoft.com/en-us/dotnet/core/compatibility/code-analysis/5.0/ca1416-platform-compatibility-analyzer

over 4 years ago · Santiago Trujillo Denunciar

0

Este ha sido un tema abierto durante mucho tiempo.

Lo solucioné editando mi información de ensamblaje compartida (no generada automáticamente) con

 #if NET6_0 [assembly: System.Runtime.Versioning.SupportedOSPlatform("windows7.0")] #endif
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda