【问题标题】:ASP.NET Core 1.1.1 MVC with EF Core - not able to scaffold from controller class带有 EF Core 的 ASP.NET Core 1.1.1 MVC - 无法从控制器类搭建脚手架
【发布时间】:2024-09-19 13:25:01
【问题描述】:

我目前在尝试从 Control 类搭建脚手架时遇到了一个丑陋的问题。 我收到以下错误:

错误文本是:

运行选定的代码生成器时出错:'未处理 异常:System.TypeLoadException:无法加载类型 'Microsoft.VisualStudio.Web.CodeGeneration.ConsoleLogger' 来自 程序集 Microsoft.VisualStudio.Web.CodeGeneration.Core, 版本=1.1.1.0,文化=中性,PublicKeyToken=adb9793829ddae60'。在 Microsoft.VisualStudio.Web.CodeGeneration.Tools.Program.Main(字符串 [] 参数)'

我的 project.json 文件是:

"Microsoft.EntityFrameworkCore.Design": "1.1.2",
"Microsoft.EntityFrameworkCore.SqlServer": "1.1.2",
"Microsoft.EntityFrameworkCore.SqlServer.Design": {
  "version": "1.1.1",
  "type": "build"
},
"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4-final",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.1.2",
"Microsoft.Extensions.Configuration.Json": "1.1.2",
"Microsoft.Extensions.Configuration.UserSecrets": "1.1.1",
"Microsoft.Extensions.Logging": "1.1.2",
"Microsoft.Extensions.Logging.Console": "1.1.2",
"Microsoft.Extensions.Logging.Debug": "1.1.1",
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.1.2",
"Microsoft.NETCore.App": {
  "version": "1.1.1",
  "type": "platform"
},
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.1.0",
"Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
  "version": "1.1.0-preview4-final",
  "type": "build"
},
"Microsoft.VisualStudio.Web.CodeGeneration.Core": "1.1.1",
"Microsoft.VisualStudio.Web.CodeGenerators.Mvc": {
  "version": "1.1.1",
  "type": "build"
},
"Microsoft.VisualStudio.Web.CodeGeneration.Design": "1.0.1"

"tools": {
"BundlerMinifier.Core": "2.4.337",
"Microsoft.AspNetCore.Razor.Tools": "1.1.0-preview4-final",
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final",
"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4-final",
"Microsoft.Extensions.SecretManager.Tools": "1.1.0-preview4-final",
"Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
  "version": "1.1.0-preview4-final",
  "imports": [
    "portable-net45+win8"
  ]
}
  },

知道我哪里做错了吗?

我已经阅读了一些关于 SO 的其他帖子,但没有找到任何帮助。

【问题讨论】:

  • IIRC 支持 VS2015 的最后一个版本(我假设你仍然使用它,因为你在 project.json - VS2017 使用 csproj)是 -preview2-final。试试这些或切换到 VS2017,迁移到 csproj 并使用 RTM 工具
  • 您好 Tseg,我应该更改哪些版本?我不太明白你指的是什么
  • tools 部分中的包,如"Microsoft.AspNetCore.Razor.Tools": "1.1.0-preview4-final",。这些工具的最后一个版本(全部以1.1.0-preview4-final 为版本)适用于VS2017。这些工具的较新版本将不再在 VS2015 上运行(仅1.1.0-preview2-final 或更早版本)。 VS2015 不会有任何进一步的更新,所以你应该尽快切换到 VS2017
  • 我试过所有版本。这没用。我犯了同样的错误。应该有办法让它在VS2015中运行
  • 您是否更改了dependenciestools 中的版本?任何 nuget 还原错误? IE。 Microsoft.EntityFrameworkCore.Tools.DotNet 在 preview2-final iirc 中不存在,它在 preview 3 iirc 中被拆分出来。所以你需要使用 Microsoft.EntityFrameworkCore.Tools1.0.0-preview2-final

标签: asp.net-core entity-framework-core asp.net-mvc-scaffolding asp.net-core-1.1


【解决方案1】:

我决定迁移到 Visual Studio 2017。经过一些麻烦后,我让它再次运行,但请注意:

<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="1.1.0-msbuild3-final" PrivateAssets="All" />

<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0-msbuild3-final" />
<DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="1.0.0-msbuild3-final" />
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.0-msbuild3-final" />
</ItemGroup>

我希望这会有所帮助

【讨论】:

    最近更新 更多