es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

.NET 6 + TypeloadException al ejecutar dotnet test… pero las pruebas pasan y se ejecutan correctamente en Rider/VS.

Tengo un proyecto dotnet 6 que se ve así:

  • MyProject.API
  • MyProject.Tests
  • MyProject.Shared

Tengo alrededor de 41 pruebas, utilizando xUnit/Moq, y todas pasan cuando las ejecuto en Rider (y en VS).

Estaba configurando una compilación en Azure Pipelines, que falló con esto:

System.TypeInitializationException: La inicialización del tipo 'Microsoft.Win32.Registry' produjo una excepción.
 ---> System.PlatformNotSupportedException: El registro no es compatible en esta plataforma.
   en Microsoft.Win32.RegistryKey.OpenBaseKeyCore(RegistryHive hKey, RegistryView view)
   en Microsoft.Win32.Registry..cctor()
   --- Fin del seguimiento de la pila de la excepción interna ---
   en Microsoft.Win32.Registry.GetBaseKeyFromKeyName(String keyName, String& subKeyName)
   en Microsoft.Win32.Registry.GetValue(String keyName, String valueName, Object defaultValue)
   en NUnit.VisualStudio.TestAdapter.RegistryBase.Exist(String property)
   en NUnit.VisualStudio.TestAdapter.NUnitTestAdapter..ctor()
Excepción System.TypeLoadException, excepción producida al ejecutar las pruebas.

¡Pasado! – Fallidos: 0, Pasados: 41, Omitidos: 0, Total: 41, Duración: 3 s

En mi máquina de desarrollo (MacBookPro 2020): obtengo el mensaje tal como se muestra.

En Azure Pipelines, utilizando la imagen ubuntu-latest: obtengo el mensaje tal como se muestra.

En Azure Pipelines, utilizando la imagen windows-2022: obtengo el TypeLoadException pero no el TypeInitializationException (presumiblemente porque hay un registro en esa imagen).

Algunas cosas que no tienen sentido para mí:
– No estoy usando NUnit, pero es el NUnitTestAdapter el que arroja una excepción.
– Intenté agregar/eliminarlo específicamente para asegurarme de que el NUnit3TestAdapter no estuviera presente, sin cambios.
– Todo está configurado para AnyCPU, pero para asegurarme intenté forzar la ejecución de las pruebas con /p:TargetPlatform=x64 (y x86), sin cambios.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Problema con la compilación de Azure Pipelines para un proyecto de dotnet 6

    El usuario tiene un proyecto de dotnet 6 con tres componentes: MyProject.API, MyProject.Tests y MyProject.Shared. Se han implementado 41 pruebas utilizando xUnit/Moq, las cuales se ejecutan correctamente tanto en Rider como en Visual Studio (VS). Sin embargo, al configurar una compilación en Azure Pipelines, se produce una excepción de tipo System.TypeInitializationException con el mensaje “Registry is not supported on this platform” (Registro no es compatible en esta plataforma).

    Este problema ocurre en una máquina macOS y también en la imagen “ubuntu-latest” en Azure Pipelines. Sin embargo, no se observa la excepción TypeInitializationException al utilizar la imagen “windows-2022”, presumiblemente porque esta cuenta con un registro.

    El usuario no está utilizando NUnit, pero es el adaptador NUnitTestAdapter el que genera la excepción. A pesar de intentar eliminarlo, no hubo cambios en el comportamiento. La configuración del proyecto ya está establecida para AnyCPU y el usuario intentó forzar la ejecución de las pruebas con /p:TargetPlatform=x64 (y x86), pero aún así enfrentó el mismo problema.

    Este problema indica que el error se encuentra en NUnitTestAdapter y su dependencia en el registro. El usuario puede necesitar investigar más a fondo y ver si existen opciones para eliminar esta dependencia o encontrar una solución alternativa. Como alternativa, el usuario podría intentar cambiar la imagen de Azure Pipelines a una versión que admita el registro, como la imagen “windows-2022”.

Comments are closed.