Я собираюсь создать тесты для моего анализатора кода Roslyn и его фиксатора кода. Я использую сгенерированный шаблон тестового проекта, который содержит множество предопределенных методов для применения и проверки исправлений кода.
Однако исправление кода моего анализатора заменит null
на default
. Литерал по умолчанию был добавлен только в C # 7.1, но проект по умолчанию, создаваемый сгенерированными вспомогательными методами, использует C # 7.0, поэтому мои тесты всегда терпят неудачу. Я не хочу менять свой анализатор на использование default(<type>)
(на самом деле бывают случаи, когда тип неизвестен анализатору).
Вот как сгенерированный метод создает новое рабочее пространство с проектом:
var solution = new AdhocWorkspace()
.CurrentSolution
.AddProject(projectId, TestProjectName, TestProjectName, language)
.AddMetadataReference(projectId, CorlibReference)
.AddMetadataReference(projectId, SystemCoreReference)
.AddMetadataReference(projectId, CSharpSymbolsReference)
.AddMetadataReference(projectId, CodeAnalysisReference);
Я не могу понять, как я смогу указать там целевую версию .NET. В файле .csproj мы добавляем этот тег:
<TargetFramework>net472</TargetFramework>
Как сделать то же самое с анализаторами кода Roslyn?