significado - Roslyn espacio de trabajo.OpenSolutionAsync(). ¿Proyectos siempre vacíos?
roslyn significado (2)
Esto generalmente es causado por una de las pocas cosas, en orden de coincidencia:
Le faltan copias de Microsoft.CodeAnalysis.CSharp.Workspaces.dll o Microsoft.CodeAnalysis.VisualBasic.Workspaces.dll. Asegúrese de que cuando esté ejecutando su proyecto, esas DLL estén al lado de Microsoft.CodeAnalysis.Workspaces.dll principal.
Estás cargando soluciones con tipos de proyectos que no admitimos. Debemos admitir cualquier tipo de proyecto, excepto los proyectos de sitio web sin proyecto. Las bibliotecas de clases deberían funcionar bien.
Tenemos un error que nos está causando que manejemos mal sus tipos de proyectos en particular. Si ese es el caso, presenta un error en GitHub .
Estoy tratando de crear un proyecto WebAPI 2.0 auto-alojado que te permita abrir / explorar / construir soluciones .sln a través de una API.
Aquí está el código dentro de uno de mis controladores, que se supone que devuelve una lista de proyectos con una ruta a .sln:
public async Task<IHttpActionResult> GetProjects(string slnPath = "")
{
var workspace = MSBuildWorkspace.Create();
var solution = await workspace.OpenSolutionAsync(slnPath);
var projects = solution.Projects;
}
Espero que los proyectos mantengan los proyectos en la solución, pero de acuerdo con el depurador, solution.Projects
y solution.ProjectIds
siempre parecen estar vacíos.
He intentado esto con varios archivos .sln
, todos los cuales puedo abrir en Visual Studio y ver que tienen proyectos en ellos.
He visto esta pregunta , pero mi proyecto no es un complemento de Visual Studio, es una biblioteca de clases llamada desde una aplicación de línea de comandos.
Si está obteniendo este problema en pruebas unitarias pero no en su código de producción, asegúrese de haber hecho referencia a Microsoft.CodeAnalysis.CSharp.dll
y Microsoft.CodeAnalysis.CSharp.Workspaces
en su proyecto de prueba.
JYL lo mencionó en los comentarios de la respuesta seleccionada, pero no lo vi de inmediato.