Как исправить ошибку пакета ChakraCore NuGet?
При инициализации нового проекта React Native Windows WPF возникает эта ошибка:
NuGet Package restore failed for project Native: Unable to find version '1.4.1-preview-00010-42060' of package 'Microsoft.ChakraCore'.
https://www.myget.org/F/chakracore-preview/api/v3/index.json: Package 'Microsoft.ChakraCore.1.4.1-preview-00010-42060' is not found on source 'https://www.myget.org/F/chakracore-preview/api/v3/index.json'.
https://api.nuget.org/v3/index.json: Package 'Microsoft.ChakraCore.1.4.1-preview-00010-42060' is not found on source 'https://api.nuget.org/v3/index.json'.
Если я создаю автономный проект и добавляю ту же ссылку на пакет NuGet, я получаю ту же ошибку - даже на Xamarin Studio Mac.
2 ответа
Проблема в том, что проект ссылался на канал "предварительного просмотра" на myget.org вместо официального канала выпуска на nuget.org. В файле (ах) NuGet.Config в вашем проекте удалите строку, которая ссылается на канал предварительного просмотра, который выглядит следующим образом:
<add key="ChakraCore" value="https://www.myget.org/F/chakracore-preview/api/v3/index.json" />
В проекте Visual Studio 2015 (или Xamarin/Visual Studio Mac) щелкните проект правой кнопкой мыши и выберите "Управление ссылками NuGet". Оттуда вы можете нажать на вкладку "Обновления", выбрать ChakraCore из списка и нажать "Обновить". Это должно обновить пакеты.config и другие файлы для вас. Обратите внимание, что если у вас был открыт проект во время редактирования файлов конфигурации, вам нужно закрыть и заново открыть проект, чтобы получить новые настройки для вступления в силу. В некоторых случаях при обновлении может остаться ссылка на предыдущий пакет 1.4.1-preview, и вам придется вручную отредактировать файл csproj, чтобы избавиться от него.
Если вам нужно внести это изменение без Visual/Xamarin Studio, вам просто нужно отредактировать несколько текстовых файлов. В файле packages.config (в Visual Studio 2015) измените строку, ссылающуюся на версию 1.4.1-preview, на последнюю версию (1.5.2 на момент написания этой статьи):
<package id="Microsoft.ChakraCore" version="1.4.1-preview-00010-42060" targetFramework="net46" developmentDependency="true" />
становится
<package id="Microsoft.ChakraCore" version="1.5.2" targetFramework="net46" developmentDependency="true" />
В файле csproj вашего проекта:<Import Project="$(SolutionDir)\packages\Microsoft.ChakraCore.1.4.1\build\netstandard1.0\Microsoft.ChakraCore.props" Condition="Exists('$(SolutionDir)\packages\Microsoft.ChakraCore.1.4.1\build\netstandard1.0\Microsoft.ChakraCore.props')" />
становится
<Import Project="$(SolutionDir)\packages\Microsoft.ChakraCore.1.5.2\build\netstandard1.0\Microsoft.ChakraCore.props" Condition="Exists('$(SolutionDir)\packages\Microsoft.ChakraCore.1.5.2\build\netstandard1.0\Microsoft.ChakraCore.props')" />
а также
<Error Condition="!Exists('$(SolutionDir)\packages\Microsoft.ChakraCore.1.4.1\build\netstandard1.0\Microsoft.ChakraCore.props')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\packages\Microsoft.ChakraCore.1.4.1\build\netstandard1.0\Microsoft.ChakraCore.props'))" />
становится
<Error Condition="!Exists('$(SolutionDir)\packages\Microsoft.ChakraCore.1.5.2\build\netstandard1.0\Microsoft.ChakraCore.props')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\packages\Microsoft.ChakraCore.1.5.2\build\netstandard1.0\Microsoft.ChakraCore.props'))" />
Вообще говоря, не упоминайте пакеты предварительного просмотра с myget.org в производственных проектах или шаблонах проектов, которые будут использовать другие. Их можно удалить в любое время, и обновления безопасности не могут публиковаться там с той же регулярностью, что и на официальных каналах.
Похоже, что предварительный просмотр пакета Microsoft.ChakraCore NuGet был удален из канала MyGet.
На основном сайте NuGet.org есть только стабильные выпуски для пакета Microsoft.ChakraCore NuGet.
Таким образом, вы можете редактировать любые ссылки на пакет и использовать опубликованную версию. Microsoft.ChakraCore версия 1.4.4 должна работать.
Существует также открытый вопрос по этому поводу на собственном сайте React GitHub.