错误:包还原失败

时间:2017-06-12 22:33:40

标签: c# asp.net-core telerik

我正在尝试将控制器添加到我在Asp.net Core项目中的解决方案。

这样做的时候我收到了这个错误。

enter image description here

enter image description here

我收到了为控制器添加最小依赖项和完全依赖项的相同消息。

请帮我解决这个问题。提前谢谢。

28 个答案:

答案 0 :(得分:5)

我在使用 net5.0 时遇到了这个问题,特别是针对某些依赖项的 5.0.5 版。我将我的 nuget 包从 5.0.5 降级到 5.0.4:

"Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="5.0.4"
"Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="5.0.4"
"Microsoft.AspNetCore.Identity.UI" Version="5.0.4" 
"Microsoft.EntityFrameworkCore.Tools" Version="5.0.4"

答案 1 :(得分:5)

  1. VS2019 [5.0]。

  2. 更新 NuGet 包(工具 -> Nuget 包管理器 -> 管理 解决方案的 NuGet 包 -> 点击更新标签,全选 并运行更新。

  3. 解决方案 -> 清理

  4. 解决方案 -> 构建

  5. 创建一个控制器。

我尝试了所有方法,但上述方法对我有用

答案 2 :(得分:3)

我在使用 Entity Framework 项目向核心 API 添加控制器时遇到了这个问题。我将 VS 16.8.5 与最新的 EF 核心版本 5.03 一起使用。包含我的 DBContext 类的类引用了 EF 5.03 。

我(最终!)在浏览 Nuget 时注意到各种代码生成包(我的 .csproj 文件中都没有引用这些包,我认为是因为 ASP.Net 核心从 3.0 开始作为框架提供,但如果我错了,请纠正我有人!),尤其是 Microsoft.VisualStudio.Web.CodeGeneration.EntityFrameworkCode 是 5.02。我没有动我的 ASP.Net 项目,而是将其他 EF 项目降级到 5.02 并解决了问题。

答案 3 :(得分:2)

我遇到了 blazor 服务器应用程序版本 5.0.5 和 Microsoft Identity 脚手架的问题。 CodeGeneration.Design 包的最高可用版本是 5.0.2,所以我将其他 Microsoft 包(特别是 EntityFramework)降级到 5.0.2 并解决了问题。

答案 4 :(得分:1)

我也遇到了这个问题。 “使用实体框架添加控制器>具有操作的API控制器”将显示“打包还原失败”错误。

正如Anish所说,这似乎是由于软件包版本未对准而引起的。我能够使用“管理解决方案的NUGET程序包”解决该问题,然后执行“全部更新”。这将我的AspNetCore版本设置为2.1.5,并解决了“ Package Restore Failed”错误,但随后导致了另一个错误,“未找到NETCore 2.1.5版本”。显然,脚手架代码生成器需要同步AspNetCore和NETCore版本,因此我从Microsoft下载中手动下载并安装了NETCore 2.1.5版。这行得通,我终于能够生成控制器。

答案 5 :(得分:1)

我已经通过更新两个文件解决了

Microsoft.VisualStudio.Web.CodeGeneration 和 Microsoft.VisualStudio.Web.CodeGeneration.Design

。其版本应与应用程序中的其他软件包版本匹配。

答案 6 :(得分:1)

我有同样的错误。并更新 NuGet 包(工具 -> Nuget 包管理器 -> 管理解决方案的 NuGet 包 -> 单击已安装。 您需要选择带有通知依赖项的版本。

例如我的选择很好:

Microsoft.AspNetCore.Identity.EntityFramework 核心版本 3.1.12

Microsoft.EntityFrameworkCore.Tools 版本 3.1.12

Microsoft.EntityFrameworkCore.SqlServer 版本 3.1.12

Microsoft.VisualStudio.Web.CodeGeneration.Design 版本 3.1.5

答案 7 :(得分:1)

只需从Nuget软件包管理器更新NUGET软件包。

答案 8 :(得分:0)

问题是您的项目中安装了一些较旧版本的nuget pacakges,并且当您尝试安装Asp.net核心时,Asp.net核心尝试安装此时所需的最新软件包。引发此类异常。

我建议您更新nuget软件包,而不要尝试脚手架。

感谢和问候

答案 9 :(得分:0)

当我尝试搭建身份模板时,我也遇到了同样的错误。我通过更新两个主要关注项目的 nuget 包来解决这个问题(我的意思是这两个项目与我要实施的项目有关)。

答案 10 :(得分:0)

尝试使用 EF for MVC 项目使用 model.predict(sequence).shape (1, 100) 添加带有视图的 MVC 控制器。

使用以下 NuGet 包的特定版本对我有用,而对于 Net5.0Microsoft.EntityFrameworkCore,使用比 Microsoft.EntityFrameworkCore.SqlServer 版本少的版本解决了问题,MVC项目中引用了这些包。

正确的包是:

Microsoft.EntityFrameworkCore.Tools

答案 11 :(得分:0)

清理解决方案后显示需要更新 NuGet 包的错误!我更新了它们并构建了解决方案。构建成功,我能够创建控制器类。

答案 12 :(得分:0)

我在创建新的“身份”脚手架项目时遇到了同样的问题。 我设法通过删除 csproj 文件中 <ItemGroup> 标记中的所有内容并运行代码生成器来使其工作。然后生成器安装它需要的包。

答案 13 :(得分:0)

我刚刚将 EntityFrameworkCore 从 3.1.10 版更新到 3.1.13 版,问题解决了。我的项目文件看起来像:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.13" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="3.1.13" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.13" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.13">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.5" />
  </ItemGroup>

</Project>

答案 14 :(得分:0)

如果没有适合您的答案,请尝试从命令行运行代码生成器。

对于我的多个项目的 sln,net 5 和一些 5.0.5 的 NuGet 包和一些 5.0.2,只有通过命令行的代码生成器工作。确保它已安装。

安装通过以下命令

dotnet tool install -g dotnet-aspnet-codegenerator

更新通过以下命令

dotnet tool update -g dotnet-aspnet-codegenerator

基本的代码生成器命令可以找到here

其中一些是:

Generator           Operation
area                Scaffolds an Area
controller          Scaffolds a controller
identity            Scaffolds Identity
razorpage           Scaffolds Razor Pages
view                Scaffolds a view

例如:

dotnet-aspnet-codegenerator identity --dbContext MyDbContextClass

寻求帮助:

dotnet-aspnet-codegenerator [YourGenerator] -h

答案 15 :(得分:0)

只需更新所有 Nuget 包、清洁解决方案和重建解决方案。它为我解决了问题。

答案 16 :(得分:0)

正如前面提到的,我从工具-> Nuget软件包管理器->管理解决方案的NuGet软件包->更新选项卡->全部更新中更新了所有NuGet软件包。然后,我能够使用EF添加控制器,并让VS生成关联的视图。

答案 17 :(得分:0)

我建议你创建一个新项目并复制代码。

之前我遇到了同样的错误。您收到此错误是因为您更新了项目中不应该执行的NUGET程序包。

答案 18 :(得分:0)

我的解决方案 -Vs2019所有nuget包升级

答案 19 :(得分:0)

我对实体框架核心sqlite nuget包有类似的问题。我安装了sqlite和sqlite核心软件包以解决此问题。可能缺少有需要的包裹。还要确保SQL Server和服务器代理正在运行。检查 SQL Server配置> SQL Server服务中的内容>右键单击 SQL Server或服务器代理,然后启动服务,然后重新启动服务器。猜猜这可能对某人有帮助

答案 20 :(得分:0)

在无法支撑IdentityFramework后,为我解决的问题是

  1. 正在检查VS2019的更新。
  2. 更新NuGet软件包(工具-> Nuget软件包管理器->管理解决方案的NuGet软件包->单击更新选项卡,选择全部并运行更新。
  3. 重试脚手架身份

答案 21 :(得分:0)

我正在运行.NET Core(和Entity Framework Core)3.1.x。

我得到了这个确切的错误,并尝试更新这里答案中已经提到的所有nuget软件包和其他相关解决方案。

问题很简单,我的数据库服务器未运行(它在本地VM上运行)。换句话说,“添加控制器...”窗口中提到的数据库上下文(即ApplicationDbContext)无法访问该数据库。启动数据库服务器后,我的脚手架创建成功了。

还请记住,尚未创建控制器和视图引用的模型/类(即表)(我还没有运行add-migration)。因此,只需要数据库连接即可。

这是一种愚蠢的(显而易见的)解决方案,但是在查看“ Package Restore Failed”错误消息时却极具误导性。

答案 22 :(得分:0)

有相同的问题,但是更新所有的Nu​​Get软件包已解决了该问题。 右键单击<< em>您的项目名称>文件->管理NuGet软件包->更新->选择所有软件包->更新

答案 23 :(得分:0)

在制作新控制器时,我遇到了同样的错误。 我已经这样修复了。 实际上,VS仅具有“脱机软件包”源,无法解析所需的软件包。

添加在线参考: 工具> nuget软件包管理器>软件包管理器设置>软件包源

添加源:https://api.nuget.org/v3/index.json

答案 24 :(得分:0)

遇到了完全相同的问题,在我的情况下,缺少CodeGenerator

我已将此项目添加到.csproj的ItemGroup中

<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.2.0" />

答案 25 :(得分:0)

我最近遇到了同样的问题。

我通过最终查看解决方案中包含的每个.csproj文件并修复了所包含的所有Microsoft库版本来解决了该问题。

我将引用的元包从“ Microsoft.AspNetCore.All”更改为“ Microsoft.AspNetCore.App”,然后在nuget上加载了“ App”包的引用列表,并删除了对已包含在元数据包中。

然后,我确保我修复了所有未完成的软件包的版本,以匹配项目自动选择的metapackage的版本,例如在我的情况下为2.2.0。

令我震惊的是,如果您的解决方案中包含多个项目,则需要确保它们引用相同的元包,就像解决方案中包含的项目之间的版本不匹配一样,您也会遇到此问题。

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.2.5" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="2.2.0" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.2.3" />
  </ItemGroup>

更改为此。

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.2.0" />
  </ItemGroup>

答案 26 :(得分:0)

我要做的就是打开Web项目的属性并将TargetFramework从2.1更改为2.2。或者匹配您的业务和对象层正在使用的任何版本的框架。

答案 27 :(得分:0)

我也面临同样的问题,以下是我如何解决问题

运行所选代码生成时出错,'包恢复失败。回滚包装袋用于网络

1 - 检查您的解决方案是否有多个项目,请检查他们的Target Dot.net Framework。(在我的情况下,类库的.Net Standard 1.6和Web项目的.NetCoreApp 1.0 ,我把它改成.NetCoreApp 1.1)

2 - 拥有相同的框架后,清理Web项目,重建并添加新的控制器。

如果成功罚款,否则您可能会遇到其他错误,例如

'运行代码生成器时出错:'找不到匹配命令的可执行文件“dotnet-aspnet-codegenerator”'

如果你有 project.json 文件打开它,请在记事本中打开 .csproj.user 项目,请添加以下内容   的         请注意,根据您的.net版本,您可能会有不同的版本号。

如果在项目中生成了 ScaffoldingReadMe.txt 文件,您可以找到该说明