c# - unitario - Referencia Microsoft.VisualStudio.QualityTools.UnitTestFramework para la compilación de CI
unit test c# visual studio 2017 (3)
He creado un proyecto de prueba de C # en VS2015 RC. se construye localmente pero cuando intento construir en nuestro servidor de compilación de CI (TeamCity) falla con errores:
UnitTest1.cs (2,17): error CS0234: El tipo o el nombre del espacio de nombres ''VisualStudio'' no existe en el espacio de nombres ''Microsoft'' (¿falta una referencia de conjunto?) [D: / BuildAgent / work / e486bf18e454d0c2 / dh. PSP.Coordinator.Api.Tests / dh.PSP.MetadataService.Api.Tests.csproj] UnitTest1.cs (9,10): error CS0246: No se pudo encontrar el tipo o el nombre del espacio de nombres ''TestMethod'' (¿falta un uso? ¿Una directiva o una referencia de ensamblaje?) [D: / BuildAgent / work / e486bf18e454d0c2 / dh.PSP.Coordinator.Api.Tests / dh.PSP.MetadataService.Api.Tests.csproj] UnitTest1.cs (9,10): error CS0246 : No se pudo encontrar el tipo o nombre de espacio de nombres ''TestMethodAttribute'' (¿falta una directiva de uso o una referencia de ensamblado?) [D: / BuildAgent / work / e486bf18e454d0c2 / dh.PSP.Coordinator.Api.Tests / dh.PSP. MetadataService.Api.Tests.csproj] UnitTest1.cs (6,6): error CS0246: No se pudo encontrar el tipo o nombre de espacio de nombres ''TestClass'' (¿falta una directiva de uso o una referencia de ensamblaje?) [D: / BuildAgent / work / e486bf18e454d0c2 / dh.PSP.Co ordinator.Api.Tests / dh.PSP.MetadataService.Api.Tests.csproj] UnitTest1.cs (6,6): error CS0246: No se pudo encontrar el tipo o el nombre del espacio de nombres ''TestClassAttribute'' (falta una directiva de uso o una referencia de ensamblaje?) [D: / BuildAgent / work / e486bf18e454d0c2 / dh.PSP.Coordinator.Api.Tests / dh.PSP.MetadataService.Api.Tests.csproj]
Claramente, esto se debe a que el ensamblaje que contiene estos espacios de nombres (Microsoft.VisualStudio.QualityTools.UnitTestFramework) no está en el servidor de compilación, en mi máquina local reside en C: / Archivos de programa (x86) / Microsoft Visual Studio 12.0 / Common7 / IDE / PublicAssemblies / Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll. Supongo que podría copiar el ensamblaje en mi solución para que se convierta en parte de la base de código, pero mover archivos manualmente se siente como un truco poco elegante. Busqué en nuget y encontré http://www.nuget.org/packages/Microsoft.VisualStudio.QualityTools.UnitTestFramework/ que pensé que haría el truco, pero la instalación de ese paquete falló:
Paquete de instalación: no se pudo instalar el paquete ''Microsoft.VisualStudio.QualityTools.UnitTestFramework 11.0.50727.1''. Está intentando instalar este paquete en un proyecto que apunta a ''.NETFramework, Version = v4.5.2'', pero el paquete no contiene referencias de ensamblajes ni archivos de contenido que sean compatibles con ese marco
¿Cuál es mi mejor opción para resolver esto? Me sorprende que la creación de un proyecto de prueba en VS2015 no incluya automáticamente todas las dependencias que necesito, aunque tal vez sea ingenuo (soy una especie de punto de letra incipiente).
Hmm tengo algunas ideas, así que elija la que mejor se adapte a sus necesidades
- Una respuesta simple debe ser marcar la DLL para copiar localmente y usar una carpeta como Assemblies en la misma carpeta de la solución y hacer referencia a "Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll"
- Instale Visual Studio en su servidor de compilación. Suena loco pero es lo más cercano a la "máquina reveladora" que tienes.
- Instale la DLL en el GAC para que no tenga que molestarse con esto.
- Arregle el paquete NuGet (Agregar una referencia para la versión de .NET Framework) y utilícelo.
- Baje la versión de .NET Framework para que pueda usar el paquete NuGet.
- Crea tu propio servidor NuGet! (Y agregue la referencia de los DLL que necesita).
En mi humilde opinión, elegiría la primera respuesta, porque parece ser la "mejor manera" de usar NuGet para resolver todos los problemas de sus paquetes, pero está utilizando una DLL que no sabe si debería ser confiable.
En el sistema utilizado en lenguajes "antiguos" como C, o C ++, es común que descargue el código fuente y las bibliotecas necesarias para que el código se ejecute, por lo que no creo que el paquete NuGet sea la mejor solución.
Usando la primera opción, siempre tiene la misma versión y puede revisar el MD5 del archivo y saber exactamente qué se está ejecutando en su servidor de compilación.
Tal vez la mejor opción real debería ser 6. Cuando use su propio servidor NuGet para manejar sus DLL, su vida será más impresionante y confiable.
La respuesta es similar a la opción 1 en la respuesta de eng.augusto .
Microsoft no proporciona NuGet para la última versión de Microsoft.VisualStudio.QualityTools.UnitTestFramework, pero lo proporciona como parte de Visual Studio ( normalmente en C: / Archivos de programa (x86) / Microsoft Visual Studio / 2017 / Enterprise / Common7 / IDE / PublicAssemblies / Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll)
Creé la carpeta Microsoft.VisualStudio.QualityTools como una subcarpeta de mi solución y la copié.
Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll Microsoft.VisualStudio.QualityTools.UnitTestFramework.xml
Los archivos deben agregarse al control de origen (incluso si usualmente se ignoran las DLL).
Luego cambié las referencias en mi Test.csproj para referirme a una nueva ubicación.