【发布时间】:2019-09-17 12:30:51
【问题描述】:
我有一个针对 netcoreapp2 和 net462 的小型基准测试项目。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>netcoreapp2;net462</TargetFrameworks>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="BenchmarkDotNet" Version="0.11.5" />
</ItemGroup>
</Project>
但是,在运行此基准测试时,它似乎只尊重 netcoreapp 目标,而不是完整的框架目标。它指出 CLR 作业是针对 net472 运行的。我可能做错了还是这是一个问题?我只定位了两个工作 [CoreJob, ClrJob]。
[主机]:.NET Core 2.0.9(CoreCLR 4.6.26614.01,CoreFX 4.6.26614.01),64 位 RyuJIT Clr:.NET Framework 4.7.2 (CLR 4.0.30319.42000),64 位 RyuJIT-v4.7.3394.0 核心:.NET Core 2.0.9(CoreCLR 4.6.26614.01,CoreFX 4.6.26614.01),64bit RyuJIT
我还注意到,即使我删除了显式作业属性并将我的项目仅定位到 net462,运行摘要仍然显示它使用 net472 执行。
【问题讨论】:
-
您的项目可以针对 .NET 4.6.2,但如果您的系统安装了 4.7.2,那么这就是运行时的版本。与 .NET Core 不同,这些不是并行安装;只有一个 4.x CLR 运行时,已就地升级。
-
有道理,这些都是容易忘记的现实。感谢您的回复。
标签: benchmarkdotnet