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

328
Visualizações
NoWarn no funciona en DNX

En mi proyecto de prueba, tengo campos privados que no están asignados en el código, pero están asignados con reflexión.

Al compilar recibo advertencias como:

Advertencia CS0649 El campo 'CLASSNAME.FIELDNAME' nunca se asigna y siempre tendrá su valor predeterminado nulo

Intenté agregar <NoWarn>649</NoWarn> al primer PropertyGroup en xproj. Pero sigo teniendo los errores.

¿NoWarn no funciona en DNX? ¿O estoy haciendo algo mal? ¿Hay alguna otra solución al problema?

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

0

Código de muestra:

 class Example { private string warningHere; // CS0649 void UseField() { Console.WriteLine(warningHere); } }

Debe convencer al compilador de que sabe lo que está haciendo, se niega a considerar la posibilidad de que use Reflection para introducir un valor en el campo. Eso es bastante simple de hacer:

 private string warningHere = null; // Fine

Puede objetar "¡Pero eso es completamente inútil! ¡CLR ya inicializa el campo en nulo!". Lo cual es ciertamente cierto. Sin embargo, no pasa nada, eliminar código superfluo como este es el trabajo del optimizador de jitter . Es particularmente bueno para eliminar asignaciones nulas innecesarias.


Podría tener <NoWarn>0649</NoWarn> en el csproj

Tenga en cuenta que esto es equivalente a resolver un problema local con un mazo global. Esta advertencia es muy importante, querrás tenerla en vigor para todo el código que compiles. Solo para demostrar, en el fragmento de código anterior cambie class a struct , mantenga el código de reflexión igual. Y tenga en cuenta que no puede dar un valor a ese campo de warningHere . Un efecto secundario de que la estructura se encuadre antes de pasar a FieldInfo.SetValue(), solo se actualiza la copia enmarcada. Ese es un error desagradable para diagnosticar si no tiene una advertencia para alertarlo.

Usar la #pragma warning en la fuente está bien, pero no es superior, demasiado fácil de olvidar para restaurarlo.

El proyecto cambió a la construcción con MSBuild hace solo dos meses, asegúrese de que su extracción no sea demasiado antigua y que también haya cambiado. Puede presentar un error en github para recordarles si la función aún no funciona. Y considere rascarse esa picazón si no puede esperar, arréglelo usted mismo. El beneficio final de un proyecto de código abierto :)

over 4 years ago · Santiago Trujillo Relatório

0

Las opciones del compilador no se pueden especificar en el archivo xproj. Siga estos pasos para suprimir una advertencia del compilador:

  1. Abra el archivo project.json del proyecto. Todas las opciones del compilador deben especificarse en este archivo.

  2. Agregue la sección compilationOptions al final del archivo:

    "Opciones de compilación": { "noWarn": [649] }

  3. Guarde el archivo y espere unos segundos hasta que vea el mensaje "Restauración del paquete completada" en la barra de estado de Visual Studio.

  4. Reconstruya el proyecto.

Esto debería suprimir la advertencia. Sin embargo, a veces (probablemente un error), los cambios que realiza en project.json no surten efecto incluso después de una compilación limpia. En este caso, al realizar cambios ficticios adicionales en el archivo y reconstruirlo, generalmente se resuelve el problema.

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