【问题标题】:Visual Studio .net core tag helpers not workingVisual Studio .net 核心标签助手不起作用
【发布时间】:2017-05-14 17:13:49
【问题描述】:

好吧,让我们开始吧。我正在使用 Visual Studio 2015 和 ASP.NET 核心标签助手已经完全停止工作,不知道为什么,因为我没有改变任何东西。有一天我在工作,他们工作得很好,然后我第二天就来了,现在根本没有 ASP.NET 核心 Web 项目显示任何标签助手!?!我尝试创建一个全新的 ASP.NET 核心 mvc 项目,但它们也不在那里工作!!!我完全被卡住了,是否有一些设置可以在 Visual Studio 中完全关闭它们?

请注意,根据大多数其他帖子,我已经检查了通常导致此问题的所有内容。我的 _ViewImports 有一行:-

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

这是一个完整的 project.json 文件,来自我刚刚创建的一个新项目,并且根本没有进行任何更改:-

{
  "dependencies": {
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Mvc": "1.0.1",
    "Microsoft.AspNetCore.Razor.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Microsoft.AspNetCore.Routing": "1.0.1",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
    "Microsoft.Extensions.Configuration.Json": "1.0.0",
    "Microsoft.Extensions.Logging": "1.0.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.Extensions.Logging.Debug": "1.0.0",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0"
  },

  "tools": {
    "BundlerMinifier.Core": "2.0.238",
    "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
  },

  "frameworks": {
    "net452": { }
  },

  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "publishOptions": {
    "include": [
      "wwwroot",
      "**/*.cshtml",
      "appsettings.json",
      "web.config"
    ]
  },

  "scripts": {
    "prepublish": [ "bower install", "dotnet bundle" ],
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}

此外,所有 _Layout 视图和其他视图都完全失去了以前出现的突出显示。到目前为止我在互联网上没有找到其他人似乎有这个问题,不认为其他人有任何想法吗?

编辑:

以下答案之一已经解决了新解决方案中的新项目的问题,但我仍然遇到现有解决方案/项目的问题。这是这些现有项目之一的项目文件内容,希望有人能在这里发现一些东西......

{
  "dependencies": {
    "BundlerMinifier.Core": "2.2.306",
    "Configuration.Web": "1.0.0-*",
    "Microsoft.AspNetCore.Diagnostics": "1.1.0",
    "Microsoft.AspNetCore.Mvc": "1.1.0",
    "Microsoft.AspNetCore.Mvc.TagHelpers": "1.1.0",
    "Microsoft.AspNetCore.Razor.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Microsoft.AspNetCore.Routing": "1.1.0",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.1.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.1.0",
    "Microsoft.AspNetCore.StaticFiles": "1.1.0",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.1.0",
    "Microsoft.Extensions.Configuration.Json": "1.1.0",
    "Microsoft.Extensions.Logging": "1.1.0",
    "Microsoft.Extensions.Logging.Console": "1.1.0",
    "Microsoft.Extensions.Logging.Debug": "1.1.0",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.1.0",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.1.0"
  },

  "tools": {
    "Microsoft.AspNetCore.Razor.Tools":  "1.0.0-preview2-final",
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
  },

  "frameworks": {
    "net452": {
      "dependencies": {
        "Aristotle.Service": {
          "target": "project"
        },
        "Infrastructure": {
          "target": "project"
        }
      }
    }
  },

  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "publishOptions": {
    "include": [
      "wwwroot",
      "**/*.cshtml",
      "appsettings.json",
      "web.config"
    ]
  },

  "scripts": {
    "prepublish": [ "bower install", "dotnet bundle" ],
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}

我已将所有使用 NuGet 的软件包更新到最新版本...

【问题讨论】:

  • 当我遇到 .net 核心的类似问题时,我发现更新我的包会有所帮助。看起来您有一些软件包,即使是 452 也是 1.1 版。也许在您创建的测试项目中升级它们,看看是否有帮助。
  • 将您的项目依赖项更新到最新的稳定版本。
  • 嗨,感谢您的回复,我已尝试将所有软件包更新到最新版本,但不幸的是没有效果。但是,如果我将标签助手引用放入其中,从头开始创建一个新项目现在可以工作(请参阅下面的其他答案)。然而,这不适用于我所有现有的项目......

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


【解决方案1】:

我终于解决了这个问题,但不知道为什么修复工作或为什么它停止工作,但是......

在 _ViewImports 中的行是:-

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

我已更改为包含引号:-

@addTagHelper "*, Microsoft.AspNetCore.Mvc.TagHelpers"

然后我进行了重建并再次工作!?!所有的“asp-”属性现在也像以前一样突出显示。为什么?!?诶?!?

更奇怪的是,如果我删除引号并重建,它仍然有效!好吧,至少在我的同事让文件脱离源代码控制之前,他们必须把引号放回去!!

找出那个...

【讨论】:

    【解决方案2】:

    对于遇到同样问题的人,请检查_ViewImports.cshtml 的位置,它必须在您的视图的同一文件夹中。例如,我创建了一个项目,该项目已经在 Pages 文件夹中包含 _ViewImports.cshtml 文件,但我创建并使用位于另一个文件夹中的视图文件,因此 ASP.NET 无法为我们的视图找到 _ViewImports.cshtml .

    如果有人在查找 project.json 时遇到问题,您可以右键单击该项目并选择管理 Nuget 包,然后安装 Microsoft.AspNetCore.Mvc.TagHelpers

    希望这些建议对大家有所帮助。

    【讨论】:

    • 这是我的问题。如果您使用区域,您似乎需要对您的 _ViewImport 文件进行多次复制。为每个 Views 文件夹添加一个
    • _ViewImports.cshtml 文件会影响与_ViewImports.cshtml 文件所在位置相同或后代文件夹中的所有视图。
    • 对我来说,environment 助手标签显示了所有包含的内容,无论包含值如何。所以看起来我遇到了开发和生产的典型双值问题,当它“简单地”忽略辅助标签时,它的内容总是可见的。
    • 在项目中使用控制器和剃须刀页面,这节省了我的培根,谢谢
    • 节省了我的时间,非常感谢
    【解决方案3】:

    如果您在使用区域时遇到同样的问题,请将_ViewImports 文件添加到您的区域的Views 文件夹中

    【讨论】:

      【解决方案4】:

      在您的 project.json 依赖项中,您缺少 TagHelpers。请在 project.json 的依赖项部分添加以下行-

      "Microsoft.AspNetCore.Mvc.TagHelpers": "1.0.1",
      

      在保存 Project.json 时,VS2015 会自动恢复包。

      如果它不起作用,请右键单击项目并单击“恢复包”选项。

      如果这不起作用,请尝试使用 dotnet restore CLI 命令进行恢复。

      【讨论】:

      • 谢谢,这适用于全新解决方案中的新项目。但是,它不适用于现有解决方案中的现有项目 - 无论它们是 v1.0.1 还是已升级到 v1.1.0。我已经为所有项目尝试了其他版本的标签助手参考,但仍然没有乐趣。
      • 您收到任何错误吗?如果 project.json 有问题,那么比较现有的 project.json 和新的 project.json。
      • @padigan 您是否收到现有项目的任何错误?你的 global.json 中提到的 SDK 版本是什么?
      • 嗨,它的 { "projects": [ "src", "test" ], "sdk": { "version": "1.0.0-preview2-003131" } }
      【解决方案5】:

      对于那些在 Razor 类库 (RCL) 中带有 ViewComponent 的用户,除了其他一些已发布的建议外,还有 3 个额外的调整解决了我无法访问的 Tag Helper:

      1. _ViewImports 文件应包含一个指向标签助手 NAMESPACE 的 @using 指令(即使智能感知会认为它不需要)
      2. _ViewImports 引用 s/b 到 @addTagHelper *, <DLL NAME> - 不一定是命名空间名称
      3. 除了 Web 应用根目录下,_ViewImports 文件还需要存在于 RCL 项目的根目录中 - 但在 RCL 中的 MVC“区域”或任何“视图”文件夹中不需要

      【讨论】:

        【解决方案6】:

        我今天有这个 project.json:

        {
          "dependencies": {
            "BundlerMinifier.Core": "2.4.337",
            "Microsoft.ApplicationInsights.AspNetCore": "2.0.0",
            "Microsoft.AspNetCore.Diagnostics": "1.1.2",
            "Microsoft.AspNetCore.Mvc": "1.1.3",
            "Microsoft.AspNetCore.Mvc.TagHelpers": "1.1.3",
            "Microsoft.AspNetCore.Razor.Design": "1.1.0-preview4-final",
            "Microsoft.AspNetCore.Razor.Tools": "1.1.0-preview4-final",
            "Microsoft.AspNetCore.Routing": "1.1.2",
            "Microsoft.AspNetCore.Server.IISIntegration": "1.1.2",
            "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.1.0-preview4-final",
            "Microsoft.AspNetCore.Server.Kestrel": "1.1.2",
            "Microsoft.AspNetCore.StaticFiles": "1.1.2",
            "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.1.2",
            "Microsoft.Extensions.Configuration.Json": "1.1.2",
            "Microsoft.Extensions.Logging": "1.1.2",
            "Microsoft.Extensions.Logging.Console": "1.1.2",
            "Microsoft.Extensions.Logging.Debug": "1.1.2",
            "Microsoft.NETCore.App": {
              "type": "platform",
              "version": "1.1.1"
            },
            "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.1.0",
            //"Microsoft.VisualStudio.Web.CodeGeneration.Tools": "1.1.0-preview4-final",
            //"Microsoft.VisualStudio.Web.CodeGenerators.Mvc": "1.1.1",
            "Wallet.Core": "1.0.0-*"
          },
        
          "tools": {
            "Microsoft.AspNetCore.Razor.Tools": "1.1.0-preview4-final"
          },
        
          "frameworks": {
            "netcoreapp1.1": {
              "imports": [
                "dnxcore50"
              ]
            }
          },
        
          "buildOptions": {
            "emitEntryPoint": true,
            "preserveCompilationContext": true
          },
        
          "runtimeOptions": {
            "configProperties": {
              "System.GC.Server": true
            }
          },
        
          "publishOptions": {
            "include": [
              "wwwroot",
              "**/*.cshtml",
              "appsettings.json",
              "web.config"
            ]
          },
        
          "scripts": {
            "prepublish": [ "bower install", "dotnet bundle" ],
            "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
          }
        }
        

        【讨论】:

          【解决方案7】:

          我注意到标签助手仅对某些视图有所帮助,因为@MayBeNextTime 好心地告知我们。虽然,@Menace 建议将 _ViewImports 文件的副本添加到您拥有视图的每个区域,为了让标签助手适用于您在应用程序中拥有的每个视图,我发现通过将 _ViewImports 文件移动到主应用程序文件夹(在解决方案资源管理器中的 Program.cs 、 Startup.cs 、 appsettings.json 旁边/或上方)您将实现无处不在的标签助手功能,而无需在您的应用程序中创建重复文件。

          看看这个:

          https://docs.microsoft.com/en-us/aspnet/core/mvc/views/layout?view=aspnetcore-2.2

          上面写着:

          _ViewImports.cshtml 文件可以放在任何文件夹中,在这种情况下,它只会应用于该文件夹及其子文件夹中的页面或视图。

          【讨论】:

            【解决方案8】:

            这是让标签助手鄙视你的最愚蠢方法的最佳竞争者。尝试注释掉单个 HTML 属性...

            <input id='@Model.InputId.Records[0].TenantId'
                    class='class-1'
                    @*class='class-2'   THIS WILL NEGATE THE asp-for ATTRIBUTE BELOW *@
                    asp-for="@Model.Records[0].TenantId"
                    type='text'
                    placeholder='Required.' />
            

            【讨论】:

              【解决方案9】:

              如果您已经拥有该 _ViewImports.cshtml 文件 如果您在“WebHost/Features/MyFolder/Views/SampleView.cshtml”等其他文件夹结构中有视图,而不是在 WebHost/Views 中

              然后将您的 _ViewImports.cshtml 文件移动到项目文件夹中。喜欢 WebHost/_ViewImports.cshtml

              现在它应该适用于所有视图。

              【讨论】:

                【解决方案10】:

                在我的情况下,我将 viewimport.cshtml 添加到 Pages=>shared 并且它不起作用。我将它移至 Pages,现在它可用于所有视图。所以它可以工作。

                【讨论】:

                  猜你喜欢
                  • 2016-07-05
                  • 1970-01-01
                  • 2017-08-23
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2018-06-11
                  相关资源
                  最近更新 更多