如何修复ChakraCore NuGet包错误?

时间:2017-07-05 18:13:44

标签: visual-studio react-native nuget xamarin-studio chakracore

初始化新的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 个答案:

答案 0 :(得分:3)

问题是该项目引用了myget.org上的“预览”供稿,而不是nuget.org上的官方发布供稿。在项目的NuGet.Config文件中,删除引用预览Feed的行,如下所示:

<add key="ChakraCore" value="https://www.myget.org/F/chakracore-preview/api/v3/index.json" />

在Visual Studio 2015(或Xamarin / Visual Studio Mac)项目中,右键单击项目并选择Manage NuGet References。从那里,您可以单击Updates选项卡,从列表中选择ChakraCore,然后单击“Update”。这应该为您更新packages.config和其他文件。请注意,如果在编辑配置文件时打开了项目,则需要关闭并重新打开项目以使新设置保持不变。在某些情况下,升级可能会留下对先前1.4.1预览包的引用,您需要手动编辑csproj文件以摆脱它。

如果您需要在没有Visual / Xamarin Studio的情况下进行此更改,则只需编辑一些文本文件即可。在packages.config(在Visual Studio 2015中)中,将引用1.4.1预览版本的行更改为最新版本(撰写本文时为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中的预览包。它们可以随时删除,安全更新可能不会以与官方渠道相同的规律发布在那里。

答案 1 :(得分:2)

看起来预览Microsoft.ChakraCore NuGet包已从MyGet feed中删除。

主要的NuGet.org网站只有Microsoft.ChakraCore NuGet package的稳定版本。

因此,您可以编辑对包的任何引用并使用已发布的版本。 Microsoft.ChakraCore版本1.4.4应该可以工作。

在React原生GitHub网站上还有一个open issue