Разрешить конфликт версий NuGet - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь установить обновление через 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, но я не совсем понимаю, что это значит и как это сделать.

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Если у вас есть каталог «packages» для проекта, в котором восстановлены все Nugets, существует сценарий 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"
}
0 голосов
/ 24 июня 2018

Если вы добавите пакет зависимостей напрямую (в этом случае добавьте пакет NuGet Microsoft.CodeAnalysis.CSharp к вашему проекту), Visual Studio будет использовать версию пакета, на которую имеются прямые ссылки, а не версии, указанные в зависимостях других ваших пакетов.Таким образом, вы указали, как разрешить конфликт путем установки определенной версии зависимости.

Вы добавляете эту ссылку, как и любой другой пакет NuGet: в VisualStudio щелкните правой кнопкой мыши проект -> "Управление NuGet".Пакеты ... "найдите Microsoft.CodeAnalysis.CSharp и установите его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...