_ViewImports.cshtml中的错误命名空间'yyy'中不存在类型或命名空间名称'xxx'

时间:2016-06-08 12:52:58

标签: asp.net-core-mvc

我正在使用ASP.Net MVC Core的RC2。

我已将我的using指令添加到_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。

2 个答案:

答案 0 :(得分:2)

如果你有最新版本的ASP.NET Core,这可以解决你的问题:

 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方法中。

答案 1 :(得分:1)

我遇到了同样的问题,并通过Google发现了这个问题。我通过确保我的类库是.NET Core/Class Library而不是Windows/Class Library(使用&#34;添加新项目&#34;对话框)来解决它。我最终删除了我的旧类库,创建了一个正确类型的新项目,并将我的源文件添加到它。