Я получаю ошибки диагностики Roslyn при анализе очень простого приложения .NET 4.6.Файлы решения можно загрузить оттуда https://github.com/dotnet/roslyn/files/2393288/DemoSolution.zip
Дерево зависимостей выглядит следующим образом:
BLL -> DB
Я получаю следующие ошибки диагностики в BLLпроект:
Решение и проекты строятся нормально, но Рослин выдает эти ошибки.Может быть, ошибки вводят в заблуждение, и мне нужно каким-то образом настроить проекты?Любая идея, как я могу решить эти ошибки?
Вот код, используемый для анализа файлов:
var properties = new Dictionary<string, string>
{
["DesignTimeBuild"] = "true",
["CheckForSystemRuntimeDependency"] = "true"
};
var workspace = MSBuildWorkspace.Create(properties);
workspace.WorkspaceFailed += (sender, args) =>
{
};
workspace.LoadMetadataForReferencedProjects = true;
Solution solution = workspace.OpenSolutionAsync(SolutionFilePath).Result;
foreach (var p in solution.Projects)
{
foreach (var file in p.Documents)
{
var semanticModel = file.GetSemanticModelAsync().Result;
var mscorlib = MetadataReference.CreateFromFile(file.FilePath);
var compilation = CSharpCompilation.Create("MyCompilation",
new[] { semanticModel.SyntaxTree }, new[] { mscorlib });
var model = compilation.GetSemanticModel(semanticModel.SyntaxTree);
var declarationDiagnistics = model.Compilation.GetDeclarationDiagnostics(CancellationToken.None);
var parseDiagnostics = model.Compilation.GetParseDiagnostics(CancellationToken.None);
var allDiagnostics = model.Compilation.GetDiagnostics(CancellationToken.None);
var methodBodyDiagnostics = model.Compilation.GetMethodBodyDiagnostics(CancellationToken.None);
}
}
Подписка на событие workspace.workspaceFailed приводит к следующей ошибке:
Ошибка Msbuild при обработке файла 'MYPATH \ BLL.csproj' с сообщением: C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ 15.0 \ Bin \ Microsoft.Common.CurrentVersion.targets: (1656, 5): Не удалось создать экземпляр задачи «GetReferenceNearestTargetFrameworkTask» из сборки «C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ Common7 \ IDE \ CommonExtensions \ Microsoft \ NuGet \ NuGet.Build.Tasks.dll».Убедитесь, что сборка задачи была собрана с использованием той же версии сборки Microsoft.Build.Framework, что и на вашем компьютере, и что ваше хост-приложение не пропускает перенаправление привязки для Microsoft.Build.Framework.Невозможно привести объект типа «NuGet.Build.Tasks.GetReferenceNearestTargetFrameworkTask» к типу «Microsoft.Build.Framework.ITask».C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ 15.0 \ Bin \ Microsoft.Common.CurrentVersion.targets: (1656, 5): задача «GetReferenceNearestTargetFrameworkTask» была объявлена или использовалась неправильно, илине удалось во время строительства.Проверьте правильность написания имени задачи и имени сборки.