[英]“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; }
它还显示在intellisense中: 无法解析标签'Project.Models.User'并且无法解析符号'model'
我添加了一个项目引用,添加了一个using语句......仍然会发生此错误。 这是为什么?
这是RC2 中存在未解决问题的错误。 问题讨论中的解决方法对我有用:
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
执行此操作。
不确定两个项目是否需要4.6.1和更新2 ,我只尝试过。
必须在Visual Studio 2015 Update 2中创建类库项目,并且必须使用.NET Framework 4.6.1。 您的ASP.NET Core项目也必须使用.NET Framework 4.6.1。
RC2是第一个支持包括类库的版本。 但我发现如果你的类库有某些依赖项(如System.DirectoryServices.AccountManagement
),它将无法在运行时加载。
我通过检查文件_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存在且为true已在Ubuntu上使用Visual Studio Code修复了此问题
{
"buildOptions": {
"emitEntryPoint": true,
"warningsAsErrors": true,
"preserveCompilationContext": true
},
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.