【问题标题】:how to fix ChakraCore NuGet package error?如何修复 ChakraCore NuGet 包错误?
【发布时间】:2017-07-05 18:13:43
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    问题在于该项目引用了 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,然后单击“更新”。这应该会为您更新 packages.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 的预览包。它们可以随时删除,安全更新可能不会像官方渠道那样定期发布。

    【讨论】:

      【解决方案2】:

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

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

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

      在 React 本机 GitHub 站点上也有一个 open issue 与此有关。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-11-06
        • 2020-06-30
        • 2019-07-13
        • 2019-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多