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

189
Visualizações
Cómo especificar globalmente que Android e iOS no son compatibles con una aplicación .net 5.0

Estoy usando System.IO.Ports en un proyecto .net 5.0. Esto genera advertencias de la siguiente manera:

advertencia CA1416: este sitio de llamada es accesible en todas las plataformas. 'SerialPort.Close()' no es compatible con: 'ios', 'android'.

Puedo poner guardias para verificar la plataforma antes de llamar a los métodos de SerialPort, pero los llamo en muchos lugares.

En cambio, me preguntaba si había una manera de decirle a .net a nivel de proyecto que no soy compatible con iOS y Android.

No quiero suprimir todas las advertencias de CA1416 porque admito:

  • ventanas y...
  • linux

...y quiero ser advertido si uso algo que no está disponible en esas plataformas.

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0


TL; DR: Básicamente, su pregunta se divide en dos partes y, lamentablemente, solo una parece ser posible.


1. Cómo excluir un sistema operativo de su proyecto

OP:

Cómo especificar globalmente que Android e iOS no son compatibles con una aplicación .net 5.0

Puedo poner guardias para verificar la plataforma antes de llamar a los métodos de SerialPort, pero los llamo en muchos lugares.

Si. En lugar de permitir todos los destinos que dice que proporciona net5.0 , puede ajustar su salida utilizando el elemento plural <TargetFrameworks> (tenga en cuenta la "s") en lugar del <TargetFramework> 1 predeterminado.

Aquí hay un proyecto de ejemplo que apunta a net5.0 :

 <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net5.0</TargetFramework> </PropertyGroup> </Project>

El proyecto anterior permitirá que su aplicación se compile para todos los sistemas operativos, incluidos Windows, Mac OS, Android e iOS .

En cambio, me preguntaba si había una manera de decirle a .net a nivel de proyecto que no soy compatible con iOS y Android.

Si. Para lograrlo, usaríamos TFM específicos del sistema operativo en lugar del net5.0 general. 1

  1. cambiar <TargetFramework> a <TargetFrameworks>
  2. cambiar net5.0 a net5.0-windows;net5.0-macos

...al igual que:

 <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFrameworks>net5.0-windows;net5.0-macos</TargetFrameworks> </PropertyGroup> </Project>

Con esto se ha eliminado la compatibilidad con iOS y Android.

2. Cómo excluir Linux

OP:

No quiero suprimir todas las advertencias de CA1416 porque soy compatible con Windows y Linux.

Aquí es donde se complica, ya que Microsoft no ha definido un TFM para Linux (¿demasiados sabores?), por lo que la única forma de especificar que desea apuntar a Linux es usar net5.0 . El soporte de Linux está implícito. Desafortunadamente, esto reactiva el soporte para iOS y Android , lo que acabamos de eliminar. También activó MacOS que quizás no le interese.


1 Marcos de destino en proyectos de estilo SDK , MSFT

over 4 years ago · Santiago Trujillo Relatório

0

Parafraseando de la documentación de advertencia ;

Puede especificar varios "moniker de marco de destino" (TFM) en las <TargetFramework> o <TargetFrameworks> de sus proyectos. Si el TFM tiene una plataforma de destino, el SDK de .NET inyecta un atributo SupportedOSPlatform con el nombre de la plataforma de destino en el archivo AssemblyInfo.cs, que consume el analizador.

Al analizador no parece importarle a qué marcos apunta, solo los atributos SupportedOSPlatform / UnsupportedOSPlatform compilados en su ensamblaje.

Si bien no puede especificar un conjunto de marcos de destino que permitirían Windows y Linux, pero nada más. Eso no le impide definir múltiples atributos SupportedOSPlatform en su AssemblyInfo.cs;

 using System.Runtime.Versioning; [assembly: SupportedOSPlatform("windows")] [assembly: SupportedOSPlatform("linux")]

Lo cual creo que debería limitar la forma en que se generan las advertencias CA1416. Incluso si su proyecto hace referencia <TargetFramework>net5.0</TargetFramework> .

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