"The type or namespace name could not be found" 在 ASP.NET Core 1.0 RC2

"The type or namespace name could not be found" in ASP.NET Core 1.0 RC2

我目前正在尝试 ASP.NET Core 1.0 RC2。我已将其创建为 .NET Framework 项目(而不是 .NET Core 项目),并通过项目引用使用 .NET Framework 4.5 添加了对我们 Models 库的引用:

"frameworks": {
  "net46": {
    "dependencies": {
      "Project.Core": {
        "target": "project"
      },
      "Project.DataAccess": {
        "target": "project"
      },
      "Project.Encryption": {
        "target": "project"
      },
      "Project.Models": {
        "target": "project"
      },
      "Project.Resources": {
        "target": "project"
      }
    }
  }
},

现在向我的视图添加模型指令时,出现以下错误:

@model System.Collections.Generic.List<Project.Models.User>

The type or namespace name 'Project' could not be found (are you missing a using directive or an assembly reference?)
    public class _Views_Home_Index_cshtml : Microsoft.AspNetCore.Mvc.Razor.RazorPage<System.Collections.Generic.List<Project.Models.User>>
The type or namespace name 'Project' could not be found (are you missing a using directive or an assembly reference?)
        public Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper<System.Collections.Generic.List<Project.Models.User>> Html { get; private set; }

在智能感知中也显示:无法解析标签'Project.Models.User'无法解析符号'model'

我已经添加了一个项目引用,添加了一个using语句...仍然出现这个错误。这是为什么?

class 库项目必须在 Visual Studio 2015 Update 2 中创建,并且必须使用 .NET Framework 4.6.1。您的 ASP.NET 核心项目也必须使用 .NET Framework 4.6.1。

RC2 是第一个据称支持包含 class 库的版本。但我发现,如果您的 class 库具有某些依赖项(如 System.DirectoryServices.AccountManagement),它将无法在运行时加载。

这是 RC2 中的一个错误 with an open issue. A workaround 在对我有用的问题讨论中是:

services.AddMvc()
.AddRazorOptions(options =>
{
    var previous = options.CompilationCallback;
    options.CompilationCallback = context =>
    {
        previous?.Invoke(context);
        context.Compilation = context.Compilation.AddReferences(MetadataReference.CreateFromFile(typeof(MyClass).Assembly.Location));
    };
    });

在您的示例中,您需要为 Project.Models.User 执行此操作。

不确定是否 ,我只尝试过。

我通过检查文件 _ViewImports.cshtml 修复了它。这就是加载到所有视图中的所有使用的地方。

例如-

@using MyProject
@using MyProject.Models
@using MyProject.Models.AccountViewModels
@using MyProject.Models.ManageViewModels
@using Microsoft.AspNetCore.Identity
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

确保 project.json buildOptions 中的 preserveCompilationContext 存在且为真已通过 Visual Studio Ubuntu

上的代码为我解决了这个问题
{
    "buildOptions": {
        "emitEntryPoint": true,
        "warningsAsErrors": true,
        "preserveCompilationContext": true
    },