c# - 即时创建 .NET/.NET Core/.NET Standard C# 类库以进行测试
问题描述
我正在开发一个以编程方式更新一些 C#(类库)项目属性的工具。目前,单元测试基于解决方案路径中已经存在的项目,但是,出于多种原因(例如,没有不必要的对象和文件),我想知道是否可以在工具执行时创建项目并访问它们的属性。
一些疑问:
- 我知道 Microsoft.Build.Evaluation 中有一个 Project 类型,但它仅属于 .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")
我知道使用 dotnet CLI 我们可以使用以下命令生成新的类库:
dotnet new classlib -n FooClassLibrary -f targetFramework
但是是否可以在不使用 CLI 的情况下访问这些底层方法和属性?
- 动态可能对我有帮助吗?
提前致谢