【问题标题】:Reference a NET461 DLL model type from ASP.NET Core View从 ASP.NET Core 视图中引用 NET461 DLL 模型类型
【发布时间】:2016-05-30 14:10:26
【问题描述】:

我有一个新的 ASP.NET Core RC2 构建如下:

  • 模型存储在 .NET Framework 461 的 DLL 库中
  • Web 是 MVC Core 1.0 完整框架 - 不基于核心框架

引用DLL库中的模型类型并运行项目时,出现以下错误:

编译所需资源时出错 处理这个请求。请查看以下具体错误 详细信息并适当地修改您的源代码。生成的代码 命名空间中不存在类型或命名空间名称“数据” 'ADMA.EWRS'(您是否缺少程序集参考?) 23.公共类_Views_Murad_Index_cshtml:Microsoft.AspNetCore.Mvc.Razor.RazorPage> 命名空间中不存在类型或命名空间名称“数据” 'ADMA.EWRS'(您是否缺少程序集参考?) 39. public Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper> html { 获取;私人套装; } 编译时出错 处理此请求所需的资源。请查看 遵循特定的错误详细信息并修改您的源代码 适当地。生成的代码类型或命名空间名称“数据”确实 命名空间“ADMA.EWRS”中不存在(您是否缺少程序集 参考?) 23.公共类_Views_Murad_Index_cshtml:Microsoft.AspNetCore.Mvc.Razor.RazorPage> 命名空间中不存在类型或命名空间名称“数据” 'ADMA.EWRS'(您是否缺少程序集参考?) 39. public Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper> html { 获取;私人套装; }

配置 Project.json 如下:

{
  "dependencies": {
    "Microsoft.ApplicationInsights.AspNetCore": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Diagnostics": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Mvc": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Razor.Tools": {
      "version": "1.0.0-preview1-final",
      "type": "build"
    },
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0-rc2-final",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0-rc2-final",
    "Microsoft.Extensions.Configuration.Json": "1.0.0-rc2-final",
    "Microsoft.Extensions.Logging": "1.0.0-rc2-final",
    "Microsoft.Extensions.Logging.Console": "1.0.0-rc2-final",
    "Microsoft.Extensions.Logging.Debug": "1.0.0-rc2-final",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-rc2-final",
    "Microsoft.AspNetCore.Authorization": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Authentication": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Authentication.Cookies": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Session": "1.0.0-rc2-final",
    "ADMA.EWRS.Web.Security": "1.0.0-*"
  },

  "tools": {
    "Microsoft.AspNetCore.Razor.Tools": {
      "version": "1.0.0-preview1-final",
      "imports": "portable-net45+win8+dnxcore50"
    },
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": {
      "version": "1.0.0-preview1-final",
      "imports": "portable-net45+win8+dnxcore50"
    }
  },

  "frameworks": {
    "net461": {
      "dependencies": {
        "ADMA.EWRS.BizDomain": {
          "target": "project"
        },
        "ADMA.EWRS.Data.Models": {
          "target": "project"
        }
      }
    }
  },


  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "publishOptions": {
    "include": [
      "wwwroot",
      "Views",
      "appsettings.json",
      "web.config"
    ]
  },

  "scripts": {
    "prepublish": [ "npm install", "bower install", "gulp clean", "gulp min" ],
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}

Solution Explorer

X Project

【问题讨论】:

  • 您的 xproj 文件是否有 ADMA.EWRS.Data.Models 项目的 ProjectReference 条目?
  • 是的,请查看附图2
  • 我的意思是,如果您在记事本中打开 ADMA.EWRS.Web.Core.xproj,您是否看到 ADMA.EWRS.Data.Models 项目的 ProjectReference 条目?如果它丢失了,那可能就是问题所在。
  • 它在那里,参考在那里:
  • 可能和这个问题有关:stackoverflow.com/questions/37289436/…

标签: asp.net-core .net-core-rc2


【解决方案1】:

在添加 Razor 选项后解决,如下代码:

 services.AddMvc().// Murad Add this for RC2, remove it if release 1.0 after June 
                AddRazorOptions(options =>
            {
                var previous = options.CompilationCallback;
                options.CompilationCallback = context =>
                {
                    previous?.Invoke(context);
                    context.Compilation = context.Compilation.AddReferences(Microsoft.CodeAnalysis.MetadataReference.CreateFromFile(typeof(ADMA.EWRS.Data.Models.Murad).Assembly.Location));
                };
            });

            //var myAssemblies = AppDomain.CurrentDomain.GetAssemblies().Select(x => Microsoft.CodeAnalysis.MetadataReference.CreateFromFile(x.Location)).ToList();
            //services.Configure((Microsoft.AspNetCore.Mvc.Razor.RazorViewEngineOptions options) =>
            //{
            //    var previous = options.CompilationCallback;
            //    options.CompilationCallback = (context) =>
            //    {
            //        previous?.Invoke(context);

            //        context.Compilation = context.Compilation.AddReferences(myAssemblies);
            //    };
            //});

检查

https://github.com/aspnet/Mvc/issues/4686

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    • 2011-10-24
    • 2016-12-23
    • 1970-01-01
    • 2010-11-11
    • 2011-07-02
    • 1970-01-01
    相关资源
    最近更新 更多