Создание .NET / .NET Core / .NET Standard C# Библиотека классов на лету для тестирования - PullRequest
1 голос
/ 21 марта 2020

Я разрабатываю инструмент, который обновляет свойства некоторых проектов C# (Библиотека классов) программным способом. В настоящее время модульные тесты основаны на проектах, которые уже существуют в пути решения, но по нескольким причинам (например, из-за отсутствия ненужных объектов и файлов) мне было интересно, возможно ли создавать проекты и получать доступ к их свойствам во время выполнения инструмента.

Некоторые сомнения:

  1. Мне известно, что в Microsoft.Build.Evaluation есть тип проекта, но он относится только к. NET 4.8. Есть ли какой-то эквивалент в. NET Core / Standard? enter image description here
  2. Когда я создаю Microsoft.Build.Evaluation.Project, есть ли способ получить / установить все свойства, которые определяют проект и отображаются в представлении свойств Visual Studio? Можно ли сделать это без сохранения проекта в каталоге?

Я использую Buildalyzer для упрощения доступа к свойствам проекта, но для него требуется путь, где проект уже существует.

var analyzerManager = new AnalyzeManager();
var project = analyzerManager.GetProject(@"C:\ClassLibraryToTest\ClassLibraryToTest.csproj");
AnalyzerResults results = project.Build();
var fooProperty = results.Results.FirstOrDefault().GetProperty("FooProperty");

Поэтому я должен использовать проект, который уже существует в моей файловой системе, или я мог бы создать проект на лету, но все же я должен сохранить его в файловой системе следующим образом:

var p = new Microsoft.Build.Evaluation.Project();
p.Save(@"C:\ClassLibrary\ClassLibrary.csproj")

Я знаю, что с помощью командной строки do tnet мы можем использовать следующую команду для создания новых библиотек классов:

do tnet new classlib -n FooClassLibrary -f targetFramework

Но возможно ли получить доступ к этим базовым методам и свойствам без использования CLI?

Может быть, динамо c будет полезным в моем случае?

Заранее спасибо

...