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