Зависимость ›= 1.0.0-rc1-update1 не может быть разрешена

Я хочу обновить свое веб-приложение C# до следующей версии asp.net.

я побежал

dnvm use  1.0.0-rc1-update1 -r clr arch x64 -p

и список dnvm показывает, что для активной версии установлено значение rc1-update1.

Теперь я хочу обновить свое решение VS2015, чтобы использовать rc1-update1.

Я отредактировал project.json, чтобы обновить версию с rc1-final до rc1-update1.

однако VS теперь указывает, что «восстановление пакета не удалось». и у меня есть сообщения об ошибках, как это.

Severity    Code    Description Project File    Line    Suppression State
Error   CS0234  The type or namespace name 'AspNet' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?)    MyBootStrap.DNX 4.5.1    

Наведение курсора мыши на отредактированные зависимости в project.json показывает

введите здесь описание изображения

Я должен пропустить шаг. Как мне обновить мой проект, чтобы использовать активную версию фреймворка?

[Обновление] Когда я создаю новое веб-приложение из шаблона, я замечаю, что оно все еще использует rc1-final.

В окне обозревателя решений также появляется сообщение «Ошибка восстановления пакета». В выходных данных отображается следующее.

PATH=.\node_modules\.bin;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\External;
%PATH%;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\External\git
C:\Users\kirsten\.dnx\runtimes\dnx-clr-win-x86.1.0.0-rc1-update1\bin\dnx.exe "C:\Users\kirsten\.dnx\runtimes\dnx-clr-win-x86.1.0.0-rc1-update1\bin\lib\Microsoft.Dnx.Tooling\Microsoft.Dnx.Tooling.dll" 
restore "E:\EShared\Dev2016\MyBootStrap\src\MyBootStrap" -f "C:\Program Files (x86)\Microsoft Web Tools\DNU"
Microsoft .NET Development Utility Clr-x86-1.0.0-rc1-16231
  CACHE https://www.nuget.org/api/v2/
Restoring packages for E:\EShared\Dev2016\MyBootStrap\src\MyBootStrap\project.json
  CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Diagnostics'
  CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.IISPlatformHandler'
  CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Mvc'
  CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Mvc.TagHelpers'
  CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Server.Kestrel'
  CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.StaticFiles'
  CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Tooling.Razor'
  CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Extensions.Configuration.FileProviderExtensions'
  CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Extensions.Configuration.Json'
  CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Extensions.Logging'
  CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Extensions.Logging.Console'
  CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Extensions.Logging.Debug'
  CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.VisualStudio.Web.BrowserLink.Loader'
Unable to locate Dependency Microsoft.AspNet.Diagnostics >= 1.0.0-rc1-update1
Unable to locate Dependency Microsoft.AspNet.IISPlatformHandler >= 1.0.0-rc1-update1
Unable to locate Dependency Microsoft.AspNet.Mvc >= 6.0.0-rc1-update1
Unable to locate Dependency Microsoft.AspNet.Mvc.TagHelpers >= 6.0.0-rc1-update1
Unable to locate Dependency Microsoft.AspNet.Server.Kestrel >= 1.0.0-rc1-update1
Unable to locate Dependency Microsoft.AspNet.StaticFiles >= 1.0.0-rc1-update1
Unable to locate Dependency Microsoft.AspNet.Tooling.Razor >= 1.0.0-rc1-update1
Unable to locate Dependency Microsoft.Extensions.Configuration.FileProviderExtensions >= 1.0.0-rc1-update1
Unable to locate Dependency Microsoft.Extensions.Configuration.Json >= 1.0.0-rc1-update1
Unable to locate Dependency Microsoft.Extensions.Logging >= 1.0.0-rc1-update1
Unable to locate Dependency Microsoft.Extensions.Logging.Console >= 1.0.0-rc1-update1
Unable to locate Dependency Microsoft.Extensions.Logging.Debug >= 1.0.0-rc1-update1
Unable to locate Dependency Microsoft.VisualStudio.Web.BrowserLink.Loader >= 14.0.0-rc1-update1
Writing lock file E:\EShared\Dev2016\MyBootStrap\src\MyBootStrap\project.lock.json
Restore complete, 413ms elapsed

из этого я вижу, что он пытается запустить x86-версию dnx. С чего бы это?

[Обновление] Мне интересно, почему он будет использовать nuget.org/api/v2, поэтому я переустановил nuget с помощью диспетчера расширений. Он показывает версию 3.3.0.167 в диспетчере расширений, но в окне вывода для диспетчера пакетов по-прежнему отображается версия 2.

Я использую Windows 7

[Обновление] project.json

{
  "version": "1.0.0-*",
  "compilationOptions": {
    "emitEntryPoint": true
  },

  "dependencies": {
    "Microsoft.AspNet.Diagnostics": "1.0.0-rc1-update1",
    "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-update1",
    "Microsoft.AspNet.Mvc": "6.0.0-rc1-update1",
    "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-update1",
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-update1",
    "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-update1",
    "Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-update1",
    "Microsoft.Extensions.Configuration.FileProviderExtensions" : "1.0.0-rc1-update1",
    "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-update1",
    "Microsoft.Extensions.Logging": "1.0.0-rc1-update1",
    "Microsoft.Extensions.Logging.Console": "1.0.0-rc1-update1",
    "Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-update1",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-rc1-update1"
  },

  "commands": {
    "web": "Microsoft.AspNet.Server.Kestrel"
  },

  "frameworks": {
    "dnx451": { },
    "dnxcore50": { }
  },

  "exclude": [
    "wwwroot",
    "node_modules"
  ],
  "publishExclude": [
    "**.user",
    "**.vspscc"
  ],
  "scripts": {
    "prepublish": [ "npm install", "bower install", "gulp clean", "gulp min" ]
  }
}

Вот мой файл NuGet.Config

    <?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageRestore>
    <add key="enabled" value="True" />
    <add key="automatic" value="True" />
  </packageRestore>
  <packageSources>
    <add key="SBD" value="E:\EShared\NuGet" />
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
  </packageSources>
  <activePackageSource>
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
  </activePackageSource>
</configuration>

Вот мои исходники пакетов

SBD — это всего лишь несколько из них, которые мы разработали самостоятельно. Я не думаю, что это должно влиять на вещи.

введите здесь описание изображения


person Kirsten Greed    schedule 01.01.2016    source источник
comment
я также пробовал перезагружаться.   -  person Kirsten Greed    schedule 01.01.2016
comment
Эти сборки asp.net просто не опубликованы в Nuget (пока), rc1-final — последняя доступная версия. Это должно не работать.   -  person Hans Passant    schedule 01.01.2016
comment
@kirsteng: Вы только что вручную изменили номера версий всех зависимостей? Каждая dll может быть отдельно разработана и опубликована в NuGet. Некоторые dll по-прежнему имеют имя -bata8, другие имеют -rc1-final и только некоторые оттуда были обновлены Update1 и имеют -rc1-update1 в номере версии. Не могли бы вы опубликовать project.json (не в виде картинки) или опубликовать ссылку на тестовый проект, который можно использовать? Кстати, существуют отдельные репозитории NuGet для разных состояний ASP.NET 5. Я бы порекомендовал вам прочитать ответ.   -  person Oleg    schedule 01.01.2016
comment
Спасибо @Oleg, я разместил project.json выше. Прочту ссылку, которую вы прислали.   -  person Kirsten Greed    schedule 01.01.2016
comment
@kirsteng: Это не важно. Вы можете использовать https://api.nuget.org/v3/index.json в Visual Studio 2015+ для использования фида NuGet V3 и использовать https://www.nuget.org/api/v2/ в Visual Studio 2012+ для использования фида NuGet V2. Важно, чтобы у вас был доступ к тем же пакетам NuGet, которые вы можете найти на https://www.nuget.org/packages/. Я думаю, что вы смешиваете несколько разных вещей. Я напишу ответ, чтобы прояснить это.   -  person Oleg    schedule 02.01.2016
comment
Спасибо @Oleg, я случайно удалил свой комментарий, на который вы ответили ... который я добавляю сейчас. - Почему мои источники пакетов NuGet должны использовать версию 2? Я вижу по вашей ссылке, что вы предлагаете api.nuget.org/v3/index.json   -  person Kirsten Greed    schedule 02.01.2016
comment
Странно, что исходники пакета Nuget не обновились до V3, когда я обновился до VS2015.   -  person Kirsten Greed    schedule 02.01.2016


Ответы (2)


Похоже, вы перепутали версию dnx (среда выполнения Microsoft .NET), версию dnvm (диспетчер версий .NET) с номером версии сборки.

ASP.NET имеет модульную структуру. Это имеет свои преимущества и недостатки. Прежде всего, вы можете проверить свой текущий dnvm (диспетчер версий .NET), используя:

dnvm version

Вы можете использовать

dnvm update-self

чтобы обновить его до последней версии.

Таким же образом вы можете использовать

dnvm list

чтобы увидеть все dnx (среда выполнения Microsoft .NET), установленные в вашем профиле. %USERPROFILE%\.dnx\runtimes. У вас будет папка для каждой установленной версии dnx. Используя dnvm use 1.0.0-rc1-update1 -r clr arch x64 -p, вы меняете ПУТЬ. Вы можете увидеть текущие версии dnx, используемые по умолчанию.

dnx --version

Он использует dnx.exe из подкаталога %USERPROFILE%\.dnx\runtimes, который вы включили в PATH с помощью dnvm use ....

Если вы используете проект Visual Studio, вы обычно создаете global.json, который содержит

{
  "projects": [
    "src"
  ],
  "sdk": {
    "version": "1.0.0-rc1-update1"
  }
}

Такая настройка сообщает версию dnx, которую следует использовать при сборке решения/проекта.

Все вышеперечисленные шаги не имеют отношения к версиям многих существующих пакетов, выпущенных в настоящее время. Вы можете перейти на страницу https://www.nuget.org/packages/ и выполнить поиск названия пакетов. Те же пакеты будут найдены, если вы используете https://www.nuget.org/api/v2/ или https://api.nuget.org/v3/index.json в конфигурации NuGet. Вы можете просмотреть http://myget.org/gallery/aspnetmaster, чтобы увидеть текущую версию ASP.NET. 5 сборок «основных» сборок (стабильная сборка), и вы можете изучить http://myget.org/gallery/aspnetvnext , чтобы увидеть последнюю версию (нестабильную из GitHub dev). Можно найти много других фидов в разделе https://www.myget.org/gallery/, но на мой взгляд только https://api.nuget.org/v3/index.json и https://www.myget.org/F/aspnetmaster/api/v3/index.json следует использовать, если вы хотите использовать последнюю стабильную версию ASP.NET 5.

Вы увидите, что в последней стабильной версии http://myget.org/gallery/aspnetmaster есть название "1.0.0-rc1-final", но есть еще много сборок, у которых другая версия как *-rc1-final. Точно так же нестабильная сборка с http://myget.org/gallery/aspnetvnext имеет сегодня имя "v1.0.0-rc2-16357", но есть много сборок, у которых другая версия как *-rc2-16357.

Другими словами, вы не должны просто менять имена всех зависимостей, чтобы использовать версию "*-rc1-update1". Вы можете открыть «Управление пакетами NuGet...» в контекстном меню, установить флажок «Включить предварительный выпуск» и выбрать вкладку «Обновления», чтобы увидеть, выпущен ли новый пакет, который вы включили в «зависимости» package.json. Только если вы найдете новый пакет, вы можете обновить его, но использование -rc1-update1 для всех пакетов приведет к ошибке.

person Oleg    schedule 01.01.2016
comment
Спасибо за полный ответ. Лично мне пришлось скопировать фид пакетов здесь в настройки источников пакетов NuGet, и это сработало. . - person Christopher J.; 01.05.2016
comment
@ChristopherJ.: Есть много других каналов, которые Microsoft будет использовать для публикации некоторых более свежих пакетов: myget.org/F/aspnetvolatiledev/api/v3/index.json, myget.org/F/dotnet-core/api/v3/index.json, myget.org/F/aspnet-contrib/api/v3/index.json, myget.org/F/azureadwebstacknightly/api/v3/index.json, nuget.org/api/v2/curated-feeds/microsoftdotnet. Лучший выбор зависит от многих критериев. Просто важно знать важность настройки веб-каналов NuGet. - person Oleg; 01.05.2016

Некоторые инструменты выбирают фреймворк по псевдониму. В командной строке проверьте, назначен ли вам псевдоним «по умолчанию» для версии 1.0.0-rc1-update1 clr x64. Если нет, выполните следующую команду.

dnvm alias default 1.0.0-rc1-update1 -a x64 -r clr

Это должно решить проблему.

person Michael Vakoč    schedule 01.01.2016
comment
Спасибо, Михаил, но без радости. - person Kirsten Greed; 01.01.2016