【问题标题】:ASP.NET MVC6 scaffolding doesn't work in BETA 8ASP.NET MVC6 脚手架在 BETA 8 中不起作用
【发布时间】:2018-10-10 06:12:28
【问题描述】:

我正在使用 ASP.NET Beta 8 试图让脚手架工作,但它遇到了 Microsoft.Framework.CodeGeneration

的问题

我的project.json

"commands": {
    "web": "Microsoft.AspNet.Server.Kestrel",
    "ef": "EntityFramework.Commands",
    "gen": "Microsoft.Framework.CodeGeneration"
  },

命令:

dnx gen controller -Name ModelClassName--datacontext MyDbContext --model ModelClassName

错误:

dnx : Error: Unable to load application or execute command 'Microsoft.Framework.CodeGeneration'. Available commands: web, ef, gen.

此软件包在 Nuget 上,但尚未针对 Beta 8 进行更新。

只有 Beta 5 版本。Link

当我安装这个 Beta 5 包时

安装包 Microsoft.Framework.CodeGeneration -Pre

并运行相同的脚手架命令我得到错误:

无法解析类型“Microsoft.Framework.Runtime.ILibraryManager”的服务

这让我觉得脚手架在 Beta 8 中不起作用。

【问题讨论】:

  • 确保 beta 版本之间的命名空间没有任何重大变化。这种情况经常发生,通常在 Github 上报告。看看Announcements
  • 能否请您在 project.json 中提供您的依赖项?

标签: asp.net-core asp.net-core-mvc


【解决方案1】:

对于所有使用 rc1-final 的人,只需将命令中的命名空间更改为

"gen": "Microsoft.Extensions.CodeGeneration"

【讨论】:

    【解决方案2】:

    Beta 5 软件包不应与 Beta 8 混合使用。

    此包似乎尚未更新,这意味着此代码在技术上已失效和/或已合并到另一个 DNX 项目中。我在Microsoft.Extensions.PlatformAbstractions 命名空间中看到了ILibraryManager

    正如我在评论中所说,您的版本可能不匹配。确保专门使用1.0.0-beta8 包(没有1.0.0-*)。我会使用 beta8 执行 File > New Project 并检查 gen 命令在新模板中使用的内容。

    【讨论】:

      【解决方案3】:

      工作脚手架未包含在 BETA 8 中。它在 RC1 中再次得到修复

      【讨论】:

        【解决方案4】:

        在 rc-update1 中,命名空间发生了变化:

        FROM: Microsoft.Framework.CodeGeneration

        收件人: Microsoft.Extensions.CodeGeneration

        所以不要安装Microsoft.Framework.CodeGeneration,只需将Microsoft.Extensions.CodeGenerators.Mvc 添加到您的project.json 中

        project.json

        "dependencies": {
        ...
        "Microsoft.Extensions.CodeGenerators.Mvc": "1.0.0-rc1-final",
        }
        
        "commands": {
        ...
        "gen": "Microsoft.Extensions.CodeGeneration"
        }
        

        自定义 MVC6 脚手架模板

        要自定义 MVC6 脚手架模板,您可以在以下文件夹中找到它们:C:\Users\{user}.dnx\packages\Microsoft.Extensions.CodeGenerators.Mvc\1.0.0-rc1-final\Templates

        要创建项目特定的模板集,只需将 Templates 文件夹复制到项目的根文件夹(即与 project.json 相同的文件夹),当您使用 dnx gen scaffolding 时,它将使用这些本地自定义模板

        【讨论】:

          【解决方案5】:

          在 Visual Studio 2015 中,您应该添加一个指向 aspnetmaster 的包源。

          转到工具->选项-> NuGet包管理器->包源 添加一个新的包名称,无论你喜欢什么。 mygetv3 将源设置为 https://www.myget.org/F/aspnetmaster/api/v3/index.json

          将它放在列表的首位。

          在 project.json -> "dependencies" 添加 "Microsoft.Framework.CodeGenerators.Mvc": "1.0.0-beta8" 并在“命令”中添加“gen”:“Microsoft.Framework.CodeGeneration”

          现在您可以像在 beta5 ex. 中一样使用它了:

          dnx gen controller -name NameController --dataContext DbContext --model ModelName -l _Layout -f

          【讨论】:

            猜你喜欢
            • 2017-12-21
            • 1970-01-01
            • 1970-01-01
            • 2015-09-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-04-01
            • 1970-01-01
            相关资源
            最近更新 更多