Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1.5K
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda