Visual Studio .net核心标记助手无法正常工作

pad*_*gan 14 c# visual-studio asp.net-core-mvc asp.net-core

好吧,让我们开始吧.我正在使用Visual Studio 2015和ASP.NET核心标记助手完全停止工作,不明白为什么我没有改变任何东西.有一天我在工作,他们工作得很好,然后我在第二天进来,现在没有任何ASP.NET核心网络项目显示任何标签助手!?!我已经尝试创建一个全新的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%" ]
  }
}
Run Code Online (Sandbox Code Playgroud)

此外,所有_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%" ]
  }
}
Run Code Online (Sandbox Code Playgroud)

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

pad*_*gan 20

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

在_ViewImports中的行是: -

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
Run Code Online (Sandbox Code Playgroud)

我改为包括引号: -

@addTagHelper "*, Microsoft.AspNetCore.Mvc.TagHelpers"
Run Code Online (Sandbox Code Playgroud)

然后我做了重建并再次工作!?!所有'asp-'属性现在也都像以前一样突出显示.为什么?!?嗯?!?

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

想出一个......


May*_*ime 12

对于遇到相同问题的任何人,请检查的位置,该位置_ViewImports.cshtml必须位于视图的同一文件夹中。例如,我创建了一个项目,该项目的_ViewImports.cshtml文件Pages夹中已经有文件,但是我创建并使用了位于另一个文件夹中的视图文件,因此ASP.NET找不到_ViewImports.cshtml我们的视图。

如果有人在寻找project.json时遇到问题,则可以右键单击该项目,然后选择Manage Nuget Packages,然后安装Microsoft.AspNetCore.Mvc.TagHelpers

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

  • 这是我的问题。如果您使用Areas,那么您似乎需要对_ViewImport文件进行多次复制。在每个“视图”文件夹中添加一个 (2认同)

Kra*_*fud 9

对于那些在 Razor 类库 (RCL) 中使用 ViewComponent 的人,除了其他一些发布的建议之外,还进行了 3 个额外的调整,解决了我无法访问的标记帮助程序的问题:

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

  • “不一定是命名空间名称”这就是为我做的。我有一个 .NET 6 项目,其基本命名空间中带有下划线(“Something_Like_This”)。构建时,生成的 DLL 包含空格而不是下划线(“Something Like This.dll”)。所以我用 DLL 名称替换了命名空间,当然没有 .dll,它起作用了。 (2认同)

elf*_*ico 5

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


San*_*ket 4

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

"Microsoft.AspNetCore.Mvc.TagHelpers": "1.0.1",
Run Code Online (Sandbox Code Playgroud)

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

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

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