我正在尝试使用 BenchmarkDotNet 为库准备性能回归测试。这要求我将相同的测试与旧(稳定)版本的库进行比较。现在,可以选择将不同版本的 NuGet 包提供给作业。似乎没有一个选项可以引用不同的程序集。
我尝试过自定义构建配置:
<ItemGroup Condition="'$(Configuration)' == 'Baseline'">
<Reference Include="MyAssembly">
<HintPath>lib\baseline\MyAssembly.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup Condition="'$(Configuration)' != 'Baseline'">
<Reference Include="MyAssembly">
<HintPath>lib\current\MyAssembly.dll</HintPath>
</Reference>
</ItemGroup>
但是当尝试通过 BenchmarkDotNet 使用这些配置时
public static void Main(string[] args) {
var summary = BenchmarkRunner.Run(typeof(Program).Assembly,
DefaultConfig.Instance
.With(Job.Default.WithCustomBuildConfiguration("Baseline"))
.With(Job.Default.WithCustomBuildConfiguration("Current")));
}
我收到构建错误,表明该程序集根本没有被引用。BenchmarkDotNet 还有助于清除它创建的任何临时工件,因此我什至无法查看生成的项目文件来弄清楚它的外观。
这里唯一的解决方法是将库包装在 NuGet 包中吗?还是我在(对于这种情况下看似稀疏的)文档中忽略了一些东西?
这个问题似乎与我得到的构建错误模糊相关。