_ViewImports.cshtml中的错误命名空间'yyy'中不存在类型或名称空间名称'xxx'
问题描述:
我正在使用ASP.Net MVC Core的RC2。_ViewImports.cshtml中的错误命名空间'yyy'中不存在类型或名称空间名称'xxx'
我已将我的使用指令添加到_ViewImports,它抱怨命名空间不正确。我在我的控制器中使用完全相同的命名空间,它工作正常,但不会在视图中工作。
using指令在同一解决方案中引用类库。
@using xxx.Web
@using xxx.Web.Models
@using xxx.Web.Models.AccountViewModels
@using xxx.Web.Models.ManageViewModels
@using Microsoft.AspNetCore.Identity
@using xxx.yyy
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
我已经对这个问题做了大量的研究,但是看起来它应该和添加命名空间一样简单。它甚至在_ViewImports中自动完成,所以我不是拼错它(我已经复制并粘贴它以防万一)。
万一它是相关的,我会使用“顶级”命名空间,所以我的Web项目是xxx.Web和我的类库是xxx.yyy。
答
我遇到了同样的问题,并通过Google发现了这个问题。我通过确保我的类库是.NET Core/Class Library
而不是Windows/Class Library
(使用“添加新项目”对话框时)来解决此问题。我最终删除了旧的类库,创建了正确类型的新项目,并添加了我的源文件。
答
如果您有最新版本的ASP.NET核心的,这可以解决你的问题:
services.Configure<RazorViewEngineOptions>(options =>
{
var previous = options.CompilationCallback;
options.CompilationCallback = (context) =>
{
previous?.Invoke(context);
context.Compilation = context.Compilation.AddReferences(MetadataReference.CreateFromFile(typeof(hbulens.MyBucketList.Utilities.EnumUtilities).Assembly.Location));
};
});
,或者你可以尝试:
services.Configure((RazorViewEngineOptions options) =>
{
var previous = options.CompilationCallback;
options.CompilationCallback = (context) =>
{
previous?.Invoke(context);
context.Compilation = context.Compilation.AddReferences(myAssemblies);
};
});
将这个代码的的ConfigureServices方法启动班。
也为我工作。谢谢! –