Итак, мои настройки:
Microsoft.CodeAnalysis, v. 2.7.0 .... Microsoft.Build, v. 15.6.85
Это веб-приложение.
У меня есть следующий код:
var msWorkspace = MSBuildWorkspace.Create();
var solution = msWorkspace.OpenSolutionAsync(filePath).Result;
По сути, я хочу загрузить локальное (локальное по отношению к серверу) решение и провести его анализ.
Однако загрузка выполняетсякажется, что это вызывает проблемы, такие как:
Ошибка Msbuild при обработке файла 'C: \ Projects \ Project.csproj' с сообщением:
Не удалось выполнить задачу «RazorCodeGen»создается из сборки "C: \ Projects \ packages \ RazorGenerator.MsBuild.2.4.1 \ build \\ .. \ tools \ RazorGenerator.MsBuild.dll".Убедитесь, что сборка задачи была собрана с использованием той же версии сборки Microsoft.Build.Framework, что и на вашем компьютере, и что ваше хост-приложение не пропускает перенаправление привязки для Microsoft.Build.Framework.Невозможно привести объект типа «RazorGenerator.MsBuild.RazorCodeGen» к типу «Microsoft.Build.Framework.ITask».
Обратите внимание, что путь в сообщении об ошибке содержит: build \\ .. \tools.
Похоже, что в пути есть \\.
Удаление дополнительной косой черты позволяет мне открыть задачу (поэтому она существует и существует)).
Работы по открытию и созданию решения с использованием Visual Studio 2017 Community Edition.
Работы по созданию решения с использованием MSBuild (v. 15.0)а также.
Я уже добавил перенаправления привязки из MSBuild.exe.config в свое приложение Web.Config.
Обновление:
Просто написал несколько строк кода, пытаясь построить решение с помощью Microsoft.Build.Execution.BuildManager и вывести ту же ошибку.Похоже, что проблема в MSBuild, а не в Roslyn / MSBuildWorkspace.