答案 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)
VS2019 [5.0]。
更新 NuGet 包(工具 -> Nuget 包管理器 -> 管理 解决方案的 NuGet 包 -> 点击更新标签,全选 并运行更新。
解决方案 -> 清理
解决方案 -> 构建
创建一个控制器。
我尝试了所有方法,但上述方法对我有用
答案 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.0
和 Microsoft.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后,为我解决的问题是
答案 21 :(得分:0)
我正在运行.NET Core(和Entity Framework Core)3.1.x。
我得到了这个确切的错误,并尝试更新这里答案中已经提到的所有nuget软件包和其他相关解决方案。
问题很简单,我的数据库服务器未运行(它在本地VM上运行)。换句话说,“添加控制器...”窗口中提到的数据库上下文(即ApplicationDbContext
)无法访问该数据库。启动数据库服务器后,我的脚手架创建成功了。
还请记住,尚未创建控制器和视图引用的模型/类(即表)(我还没有运行add-migration)。因此,只需要数据库连接即可。
这是一种愚蠢的(显而易见的)解决方案,但是在查看“ Package Restore Failed”错误消息时却极具误导性。
答案 22 :(得分:0)
有相同的问题,但是更新所有的NuGet软件包已解决了该问题。 右键单击<< em>您的项目名称>文件->管理NuGet软件包->更新->选择所有软件包->更新
答案 23 :(得分:0)
在制作新控制器时,我遇到了同样的错误。 我已经这样修复了。 实际上,VS仅具有“脱机软件包”源,无法解析所需的软件包。
添加在线参考: 工具> nuget软件包管理器>软件包管理器设置>软件包源
答案 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 文件,您可以找到该说明