【问题标题】:Can't install BenchmarkDotNet 0.10.2 on Visual Studio Ultimate 2012无法在 Visual Studio Ultimate 2012 上安装 BenchmarkDotNet 0.10.2
【发布时间】:2024-04-20 10:05:01
【问题描述】:

我正在尝试将 BenchmarkDotNet 包安装到 Visual Studio 2012 Ultimate 上的一个全新的空白控制台项目中,我收到以下错误日志:

PM> Install-Package BenchmarkDotNet
Attempting to resolve dependency 'BenchmarkDotNet.Toolchains.Roslyn (≥ 0.10.2)'.
Attempting to resolve dependency 'BenchmarkDotNet.Core (≥ 0.10.2)'.
Attempting to resolve dependency 'System.Threading.Tasks.Extensions (≥ 4.0.0)'.
Attempting to resolve dependency 'Microsoft.CodeAnalysis.CSharp (≥ 1.3.2)'.
Attempting to resolve dependency 'Microsoft.CodeAnalysis.Common (= 1.3.2)'.
Attempting to resolve dependency 'System.Collections.Immutable (≥ 1.1.37)'.
Attempting to resolve dependency 'System.Reflection.Metadata (≥ 1.2.0)'.
Install-Package : 'System.Reflection.Metadata' already has a dependency defined for 'System.Collections.Immutable'.
At line:1 char:1
+ Install-Package BenchmarkDotNet
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Install-Package], InvalidOperationException
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.InstallPackageCommand

BenchmarkDotNet 看起来非常简单......但它就是不适合我!有没有人遇到过这个问题,或者在 Visual Studio 2012 上解决了这个问题?

注意:它确实安装在 Visual Studio 2015 社区中,但这不是我可以用于实际开发的版本。

【问题讨论】:

    标签: c# visual-studio-2012 benchmarkdotnet


    【解决方案1】:

    简短回答:您只能在 VisualStudio 2015+ 中安装 BenchmarkDotNet。 Visual Studio 2012 使用不支持某些现代包的旧版本 NuGet (2.x)。 BenchmarkDotNet 依赖项之一是 Roslyn (Microsoft.CodeAnalysis.CSharp),它需要 NuGet 3.x+。

    以下是有关 BenchmarkDotNet 和 Roslyn 存储库中支持的最低 Visual Studio 版本的相关讨论:

    一种可能的解决方法:您可以在 VS2015/2017 中创建一个新的控制台项目,安装 BenchmarkDotNet 并将整个项目(带有packages 文件夹)复制到您的计算机上并使用 VS2012。

    【讨论】:

      【解决方案2】:

      通过谷歌搜索,我在github上发现了这个问题,与你的非常相似。

      您似乎无法在低于 2015 的 Visual Studio 上集成高于 0.9.7 的 BenchmarkDotNet。

      你应该试试 0.9.7 看看它是否仍然满足你的需要。

      https://github.com/dotnet/BenchmarkDotNet/issues/237

      【讨论】:

      • 这应该是对问题本身的评论!但它的目标是 .Net 4.5
      • 就是这样。太糟糕了!谢谢