首页 > 解决方案 > 即时创建 .NET/.NET Core/.NET Standard C# 类库以进行测试

问题描述

我正在开发一个以编程方式更新一些 C#(类库)项目属性的工具。目前,单元测试基于解决方案路径中已经存在的项目,但是,出于多种原因(例如,没有不必要的对象和文件),我想知道是否可以在工具执行时创建项目并访问它们的属性。

一些疑问:

  1. 我知道 Microsoft.Build.Evaluation 中有一个 Project 类型,但它仅属于 .NET 4.8。.NET Core/Standard 中是否有某种等价物? 在此处输入图像描述
  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")
  1. 我知道使用 dotnet CLI 我们可以使用以下命令生成新的类库:

    dotnet new classlib -n FooClassLibrary -f targetFramework

但是是否可以在不使用 CLI 的情况下访问这些底层方法和属性?

  1. 动态可能对我有帮助吗?

提前致谢

标签: c#.netunit-testing.net-coreclass-library

解决方案


推荐阅读