Подтвердить что ты не робот

Рабочее пространство Roslyn для .NET Core нового формата .csproj

Я работал над расширением VS Code, которое использует API-интерфейс рабочего пространства Roslyn для загрузки проекта, на данный момент расширение поддерживает формат .NET Core project.json с помощью типа ProjectJsonWorkspace в пакете Microsoft.DotNet.ProjectModel.Workspaces.

С появлением новых изменений в инструментах, я скоро буду поддерживать новый формат сборки .csproj, но не могу найти подходящее рабочее пространство стандарта .NET, которое его поддерживает.

Я понимаю, что, используя MSBuild, мне нужно будет использовать пакет MSBuild (Microsoft.CodeAnalysis.MSBuild), однако он не поддерживает .NET Standard в данный момент времени.

Какое лучшее решение, если оно существует, или мне нужно будет создать собственную реализацию рабочего пространства?

4b9b3361

Ответ 1

Говоря с разными людьми, кажется, что нет рабочего пространства MS Build, совместимого с .NET Standard, это можно увидеть в этом ответе ниже после GitHub вопрос:

Мы не сделали работу над тем, чтобы MSBuildWorkspace работала с новой кросс-платформой MSBuild. Тем временем вы можете посмотреть, что делает omnisharp для заполнения рабочей области.

Итак, кажется, что на момент написания, если вы хотите настроить рабочее пространство MSBuild в стандартном стандартном стандарте .NET, вам необходимо создать собственное пользовательское рабочее пространство с использованием API-интерфейса Roslyn, это точно так, как это делает OmniSharp.

Обновление (16/10/2017):

В то время как MSBuildWorkspace по-прежнему не поддерживает .NET Standard, существует библиотека под названием Buildalyzer, которая работает кросс-платформенно и будет генерировать AdhocWorkspace для вас, позволяя вам достичь той же цели.

using Buildalyzer.Workspaces;
// ...

AnalyzerManager manager = new AnalyzerManager();
ProjectAnalyzer analyzer = 
manager.GetProject(@"C:\MyCode\MyProject.csproj");
AdhocWorkspace workspace = analyzer.GetWorkspace();

Эта же библиотека также позволит вам ссылаться на файл решения.