Обновление пакета обновления пакета Nuget 3.1.1.0
Я обновил менеджер пакетов Nuget до версии 3.1.1.0. После открытия обновления любой проект дает мне сообщение об ошибке:
copy-item: не удается найти путь 'c:\users {username}\documents\visual studio 2015\projects {имя проекта}\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\tools\lib\net45', потому что он не существует.....
в файле init.ps1
Я обнаружил, что переменная $installpath, данная init.ps1, отличается от старого nuget к фактическому дополнительно добавленному имени подкаталога \tools, что явно неверно и дает ошибку.
Как я могу влиять на этот параметр $installpath или downgrade nuget на 3.1.0?
Я дважды проверил это поведение также в новом установленном vm с тем же результатом, VS установлен → ok, обновлен до nuget 3.1.1 → сломан.
Окружающая среда: Windows 10 German, Visual Studio 2015 Community Edition English
Ответы
Ответ 1
Я получил ту же ошибку (следующим образом):
Copy-Item : Cannot find path 'C:\Development\GitHub\pd-tech-demo\backend\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\tools\lib\net45' because it does not exist.
At C:\Development\GitHub\pd-tech-demo\backend\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\tools\init.ps1:23 char:1
+ Copy-Item $libDirectory\* $binDirectory | Out-Null
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Development\...tools\lib\net45:String) [Copy-Item], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.CopyItemCommand
Я изменил строку 10 init.ps1
на:
$libDirectory = Join-Path $installPath 'lib\net45'
в
$libDirectory = Join-Path $installPath '..\lib\net45'
который исправляет проблему (только до тех пор, пока вы снова не вернете пакет и не получите поврежденную версию).
Реальное исправление заключается в том, чтобы поддерживающие пакет обновления обновили свою копию init.ps1
. Я буду следить и посмотреть, сможем ли мы это сделать.:)
Ответ 2
Не уверен, что это поможет другим, но я получил ту же самую ошибку на VS2015 с Microsoft.CodeDom.Providers.DotNetCompilerPlatform и то, что исправлено для меня, должно было сделать следующее в консоли диспетчера пакетов:
Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
Затем после сохранения, закрытия и повторного открытия VS больше ошибок. Нет необходимости редактировать файлы ps1 для меня.
FWIW.
Ответ 3
Эта проблема отслеживается https://github.com/NuGet/Home/issues/1125
мы также работаем с владельцем пакета, чтобы узнать, может ли он перейти с помощью init.ps1 для настройки проекта. Этот процесс не соответствует рекомендациям NuGet, но мы не уверены, есть ли еще обходной путь.
Ответ 4
Я получил ту же ошибку в консоли диспетчера пакетов и в итоге нашел этот поток.
Как сказано в сообщении об ошибке, каталог пакетов... \Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\tools\lib\net45 отсутствует, поэтому проблема.
Каталог "lib" создается по какой-либо причине в каталоге "Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0"? Когда я переместил каталог "lib" в каталог "tools", перезапустите VS, сообщение об ошибке исчезнет.
Ответ 5
У меня также была эта ошибка.
Изменение строки 10 init.ps1
на:
Это не помогло:
$libDirectory = Join-Path $installPath '..\lib\net45'
Это работало:
$libDirectory = Join-Path $installPath '\lib\net45'