【问题标题】:Resolve NuGet Version Conflict解决 NuGet 版本冲突
【发布时间】:2018-10-26 15:18:00
【问题描述】:

我正在尝试通过 NuGet 安装更新:

Microsoft.AspNetCore.Mvc 1.1.2 --> 2.0.4

但是,更新永远不会成功,因为它在遇到以下冲突后回滚:

Version conflict detected for Microsoft.CodeAnalysis.CSharp. Reference the package directly from the project to resolve this issue.


Web -> Microsoft.AspNetCore.Mvc 2.0.4 -> Microsoft.AspNetCore.Mvc.RazorPages 2.0.4 -> 
Microsoft.AspNetCore.Mvc.Razor 2.0.4 -> Microsoft.CodeAnalysis.CSharp (>= 2.3.1) 

Web -> Microsoft.VisualStudio.Web.CodeGeneration.Design 1.1.0 -> 
Microsoft.VisualStudio.Web.CodeGeneration.Utils 1.1.0 ->
 Microsoft.CodeAnalysis.CSharp.Workspaces 1.3.0 -> 
Microsoft.CodeAnalysis.CSharp (= 1.3.0).

据我了解,Microsoft.CodeAnalysis.CSharp 是罪魁祸首,因为Microsoft.AspNetCore.Mvc 的依赖项要求它至少为v2.3.1,而Microsoft.VisualStudio.Web.CodeGeneration.Design 也有依赖项要求它为v1.3.0

我不确定如何解决这个问题。它确实说Reference the package directly from the project to resolve this issue,但我真的不明白这是什么意思以及如何做到这一点。

【问题讨论】:

    标签: c# dependencies nuget roslyn-code-analysis


    【解决方案1】:

    如果您的项目有“packages”目录,其中所有 Nuget 都已恢复,那么有 PowerShell 脚本可以快速检查多个 Nuget 版本冲突:

    $dir = "C:\packages"
    $nugets = Get-ChildItem -Path $dir -Directory | ?{ $_.PSIsContainer } | ForEach-Object { $_.Name }
    $nCount = $nugets.Count
    
    Write-Host "Found $nCount nuggets in '$dir' direcotry"
    
    $nugetObjects = $nugets | %{ [pscustomobject]@{ Name = $_ -replace '\.([0-9]).*([0-9])$'; Version = $_ -replace '^([A-Za-z]).*([A-Za-z])\.' }} | Group-Object "Name"
    
    $conflicts = $nugetObjects | Where-Object {$_.Count -gt 1}
    if ($conflicts.Count -gt 0) {
        Write-Host "Found Nuget multiuple versions"
        $conflicts
    }
    else {
        Write-Host "Jey - Not found any Nuget version conflicts"
    }
    

    【讨论】:

      【解决方案2】:

      如果您直接添加依赖包(在这种情况下,将 NuGet 包 Microsoft.CodeAnalysis.CSharp 添加到您的项目中)Visual Studio 将使用直接引用的包的版本,而不是其他包的依赖项中指定的版本。这样,您就指定了如何通过安装特定版本的依赖项来解决冲突。

      您可以像添加任何其他 NuGet 包一样添加此引用:在 VisualStudio 中右键单击项目 ->“管理 NuGet 包...”搜索 Microsoft.CodeAnalysis.CSharp 并安装它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-10
        相关资源
        最近更新 更多