project.Documects всегда пустой Roslyn

142
29 мая 2019, 15:40
string solutionPath = @"C:\...\...\ConsoleApp8.sln";
MSBuildWorkspace msWorkspace = MSBuildWorkspace.Create();
var solution = msWorkspace.OpenSolutionAsync(solutionPath).Result;
foreach (Project project in solution.Projects)
{
    Console.WriteLine(project.Name);
    foreach (var document in project.Documents)
    {
        Console.WriteLine(project.Documents);
    }
}

при запуске проекта document всегда пустой

Answer 1

Похожая проблема описана здесь: https://github.com/dotnet/roslyn/issues/25370

Если добавить в код вывод диагностических сообщений MSBuild:

var diagnostics = msWorkspace.Diagnostics;
foreach (var diagnostic in diagnostics)
{
     Console.WriteLine(diagnostic.Message);
}

Он покажет примерно следующее:

Сбой Msbuild при обработке файла "..." с сообщением: MSB0001: Internal MSBuild Error: Type information for Microsoft.Build.Utilities.ToolLocationHelper was present in the whitelist cache as Microsoft.Build.Utilities.ToolLocationHelper, Microsoft.Build.Utilities.Core, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a but the type could not be loaded. unexpectedly null

Установка NuGet-пакета Microsoft.Build.Tasks.Core должна решить проблему. Ошибки MSBuild при этом полностью не исчезают, однако, список документов начинает выводится:

foreach (Project project in solution.Projects)
{
    Console.WriteLine(project.Name);                
    foreach (var document in project.Documents)
    {
        Console.WriteLine("- " + document.Name);
    }
}
/* Результат:
ConsoleApp1
- Program.cs
- AssemblyInfo.cs
- .NETFramework,Version=v4.6.AssemblyAttributes.cs
*/
READ ALSO
Как внедрить System.Data в exe?

Как внедрить System.Data в exe?

На компьютере у одного пользователя не установлен SqlClientСоответственно у меня используются экземпляры класса System

126
Редактирование коллекции в PropertyGrid

Редактирование коллекции в PropertyGrid

В общем, сделал класс, который содержит несколько простых строковых полей

153
Как открыть книгу XLSX защищенную паролем PHP?

Как открыть книгу XLSX защищенную паролем PHP?

Подскажите как отрыть книгу excel защищенную паролем? В интернете не смог найти информацию в основном предлагается задать пароль книгиПытаюсь...

134
пустые функции возвращают значение

пустые функции возвращают значение

Копался в коде laravel, просто глянуть что как, поучиться чему нибудь, и ума не приложу как такВот код:

128