2015-08-02 4 views
19

Обновлен менеджер пакетов Nuget до версии 3.1.1.0. После открытия обновления любой проект дает мне сообщение об ошибке: copy-item: can not find path 'c: \ users {username} \ documents \ visual studio 2015 \ projects {имя проекта} \ packages \ Microsoft.CodeDom.Providers.DotNetCompilerPlatform .1.0.0 \ tools \ lib \ net45 ', потому что он не существует ..... в файле init.ps1Обновление диспетчера пакетов Nuget 3.1.1.0 broken

Я нашел переменную $ installpath, предоставленную init.ps1, отличается от старого nuget к фактическому дополнительно добавленным \ tools, что явно неверно и дает ошибку.

Как я могу повлиять на этот параметр $ installpath или downgrade nuget на 3.1.0?

Я дважды проверил это поведение также в новом установленном vm с тем же результатом, VS установлен -> ok, обновить до nuget 3.1.1 -> сломан.

Окружающая среда: Windows 10 немецкий, Visual Studio 2015 Community Edition английский

+1

Я открыла бы проблему на сайте [NuGet's GitHub] (https://github.com/nuget/home) о проблеме, которую вы видите. –

+0

Открыт вопрос о GitHub: https://github.com/NuGet/Home/issues/1125#issuecomment-128503074. –

ответ

20

Я получил ту же ошибку, а также (следующим образом):

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. Я буду следить и посмотреть, сможем ли мы это сделать. :)

+0

https://github.com/dotnet/roslyn/issues/4352#issuecomment-128083219 –

+0

Это ошибка в NuGet, см. Мои комментарии ниже –

0

У меня также была эта ошибка. Изменение линии 10 из init.ps1 к: Это не сработало:

$libDirectory = Join-Path $installPath '..\lib\net45' 

В этом сделал работу:

$libDirectory = Join-Path $installPath '\lib\net45' 
2

Этот вопрос отслеживается https://github.com/NuGet/Home/issues/1125 мы также работаем с владельцем пакета, чтобы увидеть, если он может перейти с помощью init.ps1 для настройки проекта. Этот процесс не соответствует рекомендациям NuGet, но мы не уверены, есть ли еще обходное решение.

+2

, и исправление находится в полете, оно будет частью релиза 3.1.2 –

2

Я получил ту же ошибку в консоли диспетчера пакетов и в конце концов нашел эту тему.

Как сказано в сообщении об ошибке, пакет пакетов ... \ Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0 \ tools \ lib \ net45 отсутствует, следовательно, проблема.

Каталог «lib» создается по какой-либо причине под каталогом «Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0»? Когда я переместил каталог «lib» в каталог «tools», перезапустите VS, сообщение об ошибке исчезнет.

21

Не уверен, что это поможет другим, но я получил ту же самую ошибку на VS2015 с Microsoft.CodeDom.Providers.DotNetCompilerPlatform и что установил ее для меня было сделать следующее в Package Manager Console:

Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform 

Затем после сохранения, закрытия и повторного открытия VS, не больше ошибок. Нет необходимости редактировать файлы ps1 для меня.

FWIW.

+0

Мне не хватало папку с папками, о которой она говорила. Это произошло после того, как сила закрыла и восстановила документы, поэтому решение @Tod Thomson не сработало для меня, но это произошло. –

+3

Это работало для меня (в VS 2015), а также –

+1

'DotNetCompilerPlatform.1.0.2' исправил его для меня, ссылался на' DotNetCompilerPlatform.1.0.0' в VS 2015. Ошибка, которую я получал: _Join-Path: Can not convert 'System.Object []' для типа 'System.String', требуемого параметром 'ChildPath'. Указанный метод не поддерживается.at .... init.ps1: 13 char: 57_, также _Join-Path: не может связывать аргумент с параметром «Путь», потому что он равен null ... при init.ps1: 14 char: 44_ – SliverNinja