(VS2017)运行所选代码生成器时出错:'序列不包含任何元素'

时间:2018-01-26 09:02:43

标签: c# asp.net-mvc visual-studio visual-studio-2017

我在MVC开发上运行one of Microsoft's tutorial,并且在尝试创建各种元素时遇到错误;视图,控制器等

我得到的错误如下:

There was an error running the selected code generator: 
'Sequence contains no elements'

每当我尝试创建一个新元素时,它都是一致的。早些时候,我通过复制视图并重新利用它来绕过错误。但从长远来看,这不是最佳的!

我目前正在参与本教程中出现问题的工作。但是,当我昨天在家里开始本教程时(因此,在不同的网络上)我没有问题。可能有话要说吗?

Here's a link to the project on GitHub.

您认为这是我的网络,项目本身或完全不同的问题吗?

13 个答案:

答案 0 :(得分:7)

我赞成@ James的评论,因为它对我有用,但我想将其添加为一个让其他人更容易看到的答案:

打开包管理器控制台:

工具> Nuget包管理器>包管理器控制台

类型:

dotnet restore

无需重新启动/重新安装。

答案 1 :(得分:4)

Visual Studio 2019和.net core 3.0

未安装: Microsoft.VisualStudio.Web.CodeGeneration.Design 版本:3.1.0-preview3.19558.8

并安装: Microsoft.VisualStudio.Web.CodeGeneration.Design 版本:3.0.0

为我解决了这个问题。

答案 2 :(得分:3)

尝试清除ComponentModelCache,缓存将在下次启动VS时重建。

  1. 关闭Visual Studio删除此文件夹中的所有内容
  2. C:\用户\应用程序数据\本地\微软\ VisualStudio的\ 14.0 \ ComponentModelCache
  3. 重新启动Visual Studio 14.0适用于visual studio 2015.这也适用于其他版本。
  4. 归功于https://stackoverflow.com/a/35815094/5209435

    修改

    providerNames文件的connectionString部分中的web.config是否相同?

    您可能还想尝试herehere建议的解决方案。

答案 3 :(得分:1)

如果您的web.config中有不同的连接字符串实例,则会发生错误

注释掉其他不需要的或必需的连接字符串标记,然后重新构建您的解决方案。就是这样

答案 4 :(得分:1)

对我来说,Microsoft.VisualStudio.Web.CodeGeneration.Design是使用错误的.NetFramework版本还原的。因此,我启动了程序包管理器控制台(工具> NuGet程序包管理器>程序包管理器控制台),然后键入Install-Package Microsoft.VisualStudio.Web.CodeGeneration.Design -Version 3.0.0

这为我解决了。

答案 5 :(得分:1)

以上所有答案对我都无效。

但是,这是我收到的错误消息-

“在依赖关系约束microsoft.aspnetcore.app 2.1.1之外检测到的程序包版本需要microsoft.netcore.razor.design ... bla bla bla”

我克服了如何通过nuget软件包管理器安装较低版本的razor:

步骤:

在Visual Studio 2017上,单击“工具”>“ Nuget程序包管理器”>“程序包管理器控制台”,然后运行以下命令。

安装软件包Microsoft.VisualStudio.Web.CodeGeneration.Design-版本2.1.1

答案 6 :(得分:0)

卸载并重新安装VS2017不起作用。我可以创建类,项目和其他较小的元素。但是,创建控制器,视图等的问题仍然存在。

答案 7 :(得分:0)

我试图在ASP.NET Core Web应用程序(API模板)中添加一个空的API控制器。我在“项目属性”中发现未设置目标框架。我将其设置为.NET Core 2.1。

如果您随后尝试添加控制器,则会收到错误消息,因为此行代码已添加到Startup.cs中。

services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

并且CompatibilityVersion没有Version2_2的枚举,因此将其更改为2_1:

services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

现在,它将控制器添加为正常。

我正在通过一个全新的项目来实现这一目标。 Visual Studio 2017 15.9.11。

我已经尝试过dotnet还原并清除ComponentModelCache。

答案 8 :(得分:0)

您必须更新或安装Microsoft.VisualStudio.Web.CodeGeneration.Design程序包的版本。

这是解决方案,请注意。

答案 9 :(得分:0)

我在Visual Studio 2019中遇到了相同的错误。

问题可以通过以下方式解决:

  • 关闭Visual Studio
  • 删除“ .vs”目录
  • 打开项目
  • 重建

答案 10 :(得分:0)

这在VS 2017中对我有用。

关闭VS 2017打开的实例。再次打开它。重建解决方案,然后创建View,Controller等。它将立即创建。

答案 11 :(得分:0)

我的项目对其中一项依赖项( Microsoft.VisualStudio.Web.CodeGeneration.Design )发出了警告。我删除了依赖关系,然后重建了项目。

然后,我添加了一个新的Razor页面,并将依赖项读入了该项目-使用较早的版本(2.1.9),现在我可以添加Razor页面而没有问题了。

答案 12 :(得分:0)

我没有根本原因的证据,但是以下问题浪费了我两天的时间才能找到解决方法。

如果模型类中有大数据表类型,请检查以下单词是否存在

[Column(TypeName = "ubigint")]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
在您的模型课中。 只需取出这两行,一切都会好起来的。