2012-10-01 15 views
6

Tengo una aplicación .net 4 MVC Web Api que originalmente construí en visual studio 2010. Como parte de esta solución, tengo un conjunto de pruebas unitarias.

he decorado los métodos de ensayo unidad con la siguiente

[AspNetDevelopmentServerHost("$(SolutionDir)\\DataCollectionService", "/")] 

Mi entendimiento es que el "$ (SolutionDir)" parámetro contiene la ruta de acceso al directorio de la solución, y hace que el conjunto de pruebas más genérico, ya que trabaja en múltiples ambientes. Todo esto funciona muy bien en Visual Studio 2010.

Sin embargo cuando abra el proyecto en Visual Studio 2012 y tratar de ejecutar el conjunto de pruebas me sale el siguiente error

"mensaje: la ruta del sitio Web '$ (SolutionDir) \ DataCollectionService' no existe ...."

Si lo cambio a la ruta exacta como

[AspNetDevelopmentServerHost("D:\\CASLog\\Trunk\\DataCollectionService", "/")] 

funciona bien, aunque no es más genérico.

No estoy seguro de si es significativo, pero mi visual studio 2010 tiene resharper, mientras que mi visual studio 2012 no.

¿Alguna idea de qué está pasando?

Respuesta

6

Porque $(SolutionDir) es de hecho una macro. Las macros ya no están disponibles en VS2012. Una solución consiste en utilizar una variable de entorno (personalizada o% PathToWebRoot%). Las variables de entorno son compatibles con AspNetDevelopmentServerHost. Puede establecer el valor en un método ClassInitializeAttribute con Environment.SetEnvironmentVariable.

Cuestiones relacionadas