Я разрабатываю инструмент, который обновляет свойства некоторых проектов C# (Библиотека классов) программным способом. В настоящее время модульные тесты основаны на проектах, которые уже существуют в пути решения, но по нескольким причинам (например, из-за отсутствия ненужных объектов и файлов) мне было интересно, возможно ли создавать проекты и получать доступ к их свойствам во время выполнения инструмента.
Некоторые сомнения:
- Мне известно, что в Microsoft.Build.Evaluation есть тип проекта, но он относится только к. NET 4.8. Есть ли какой-то эквивалент в. NET Core / Standard?
- Когда я создаю 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 будет полезным в моем случае?
Заранее спасибо