如何修复 ChakraCore NuGet 包错误?

how to fix ChakraCore NuGet package error?

在初始化新的 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 上也是如此。

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

主要 NuGet.org 站点只有 Microsoft.ChakraCore NuGet package.

的稳定版本

所以您只剩下编辑对包的任何引用并使用已发布的版本。 Microsoft.ChakraCore 版本 1.4.4 应该可以。

在 React native GitHub 网站上也有关于此的 open issue

问题是该项目引用了 myget.org 上的 "preview" 提要,而不是 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)项目中,右键单击该项目并 select 管理 NuGet 引用。从那里,您可以单击“更新”选项卡,从列表中单击 select ChakraCore,然后单击 "Update"。这应该会为您更新 packages.config 和其他文件。请注意,如果您在编辑配置文件时打开了项目,则需要关闭并重新打开项目以使新设置生效。在某些情况下,升级可能会留下对之前 1.4.1-preview 包的引用,您需要手动编辑 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 的预览包。它们可以随时删除,安全更新可能不会像官方渠道那样定期发布。