Visual Studio informa de una excepción al cargar un proyecto

1

Cuando intenté abrir una solución hoy, Visual Studio 2015 marcó cada proyecto en el explorador de soluciones con Carga fallida . La ventana de resultados de "solución" informó la siguiente excepción, una vez por proyecto:

C: \ Users \ Path \ To \ My \ Project \ Foo.csproj: error: La expresión "[System.IO.Path] :: Combine (" C: \ Users \ My Name \ Documents \ Visual Studio 2010 \ Projects " , obj \ Debug \ Fakes) "no se puede evaluar. Caracteres ilegales en ruta. C: \ Archivos de programa (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ Fakes \ Microsoft.QualityTools.Testing.Fakes.targets

Al intentar abrir algunas soluciones más, descubrí que Visual Studio ahora informa estos errores para cualquier proyecto que intente abrir.

Restablecí todas las configuraciones de Visual Studio, que no resolvieron el problema. Microsoft Fakes parece ser un marco burlón para propósitos de prueba (corríjame si me equivoco); Los proyectos no contenían ninguna prueba, ni he accedido a Fakes intencionalmente.

No tengo conocimiento de haber cambiado nada relacionado con Visual Studio o las soluciones en cuestión desde ayer, cuando todo funcionaba. Mi instalación paralela de Visual Studio 2010 todavía funciona bien y puede cargar las soluciones y los proyectos.

Como experimento, edité el archivo mencionado en el mensaje de error, Microsoft.QualityTools.Testing.Fakes.targets , en particular la siguiente línea:

<FakesIntermediatePath>$([System.IO.Path]::Combine('$(ProjectDir)','$(IntermediateOutputPath)Fakes'))</FakesIntermediatePath>

Reemplacé '$(ProjectDir)' con una cadena constante; esto hace que Visual Studio vuelva a cargar los proyectos, pero como no estoy seguro de cuál es el propósito de este script, no me atrevo a utilizar esta solución alternativa. También esto sugiere que el valor de $(ProjectDir) podría contener caracteres no válidos, que no pude confirmar. También me pregunto por qué el directorio intermedio de Fakes podría ubicarse directamente en el directorio en el que Visual Studio coloca sus proyectos.

waldrumpus
fuente

Respuestas:

2

Mientras escribía la pregunta, encontré la causa del problema.

Si bien no cambié ninguna configuración de Visual Studio ayer, lo que sí hice fue agregar una variable de entorno llamada PROJECTDIR que apuntaba a mi directorio de proyectos de Visual Studio 2010. El script debe haber accedido a esa variable en lugar de su propia. Después de cambiar el nombre de la variable de entorno, Visual Studio puede volver a cargar los proyectos.

Esa es la razón por la que Fakes intentó configurar su directorio intermediario en mi Documents\Visual Studio 2010\Projects directorio, en lugar de en un subdirectorio del proyecto real. En retrospectiva, parece obvio, pero en ese momento simplemente no hice la conexión entre una variable de entorno del sistema y una variable utilizada por un script de "objetivos".

Todavía estoy publicando esto aquí porque este tipo de interacción es a menudo difícil de detectar, y tal vez esta publicación le ahorrará a alguien más problemas en el futuro.

waldrumpus
fuente