从asp.net核心引用类库库框架4.6.1 .net完整框架4.6.1

问题描述:

我是.net核心应用程序的新手。我正在开发一个针对“net461”(完整框架)的asp.net核心(1.0 - > MVC6)。以下是project.json:从asp.net核心引用类库库框架4.6.1 .net完整框架4.6.1

{ 
    "dependencies": { 
    "KendoUICore": "2016.2.607", 
    "Microsoft.AspNetCore.Razor.Tools": { 
     "version": "1.0.0-preview1-final", 
     "type": "build" 
    }, 
    "Microsoft.Dnx.Compilation.CSharp.Abstractions": "1.0.0-rc1-final", 
    "Microsoft.Extensions.CompilationAbstractions": "0.0.1-alpha", 
    "System.Linq.Queryable": "4.0.0", 
    "Telerik.DataAccess.Core": "2016.1.224.1", 
    "Microsoft.AspNetCore.Diagnostics": "1.0.0", 
    "Microsoft.AspNetCore.Mvc": "1.0.0", 
    "Microsoft.AspNetCore.Mvc.Formatters.Xml": "1.0.0", 
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0", 
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0", 
    "Microsoft.AspNetCore.StaticFiles": "1.0.0", 
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0", 
    "Microsoft.Extensions.Configuration.Json": "1.0.0", 
    "Microsoft.Extensions.Configuration.UserSecrets": "1.0.0", 
    "Microsoft.Extensions.Logging": "1.0.0", 
    "Microsoft.Extensions.Logging.Console": "1.0.0", 
    "Microsoft.Extensions.Logging.Debug": "1.0.0", 
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0", 
    "Microsoft.ApplicationInsights.AspNetCore": "1.0.0", 
    "Microsoft.AspNet.Identity.Owin": "2.2.1", 
    "Microsoft.Owin.Host.SystemWeb": "3.0.1", 
    "Microsoft.AspNetCore.Session": "1.0.0", 
    "jQuery": "3.0.0.1" 
    }, 

    "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" 
    }, 
    "Microsoft.Extensions.SecretManager.Tools": { 
     "version": "1.0.0-preview1-final", 
     "imports": "portable-net45+win8+dnxcore50" 
    } 
    }, 

    "frameworks": { 
    "net461": { 
     "dependencies": { 
     "OmniPayDataModel": { 
      "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%" ] 
    }, 
    "userSecretsId": "aspnet-OmniAdminConcept-Mvc6CoreWin-20160622113707" 
} 

我需要添加一个类库瞄准称为OmniPayDataModel(使用telerik.DataAccess.Core)框架4.6.1:

enter image description here

我的问题是,我可以“T从我的asp.net MVC项目抛出下面的错误引用OmniPayDataModel.dll:

enter image description here

但是,可以添加csproj作为引用(针对项目作为project.json显示),但由于某些原因,当我生成/重建OmniPayDataModel.dll时,运行解决方案时未反映出任何更改(例如:我将Dataannotations如displayname但我的班级模特<label asp-for="..." />未显示要显示的文字)。以下代码段:

namespace DataModel 
{ 
    [MetadataType(typeof(Directory.DirectoryMetadata))] 
    public partial class Directory 
    { 
     internal sealed class DirectoryMetadata 
     { 
      public DirectoryMetadata() 
      { 
      } 

      [Display(Name = "Id Directorio")] 
      [Required()] 
      public string DirectoryId 
      { get; set; } 

      [Display(Name = "Nombre Completo")] 
      [Required()] 
      public string DirectoryFullName 
      { get; set; } 

对不起,如果我错了,但为什么我不能添加dll引用到我的主项目?为什么主项目增加了csproj作为参考,但是变化没有被反映出来?

我自己找到了解决方案。

对于一个Asp.Net核心项目来说,引用csproj(类库)并没有不方便,并且对该类库所做的更改反映良好。当遇到根问题将MetadataType属性功能指向Asp.Net核心项目时,遇到了一个问题,使我将其归因于引用不兼容。

我不得不使用ModelMetadataTypeAttribute,而不是MetadataTypeAttributeMicrosoft.AspNetCore.Mvc.Core组装。装饰元数据类(好友类)遵循相同的方法,使用Display(...),DisplayName(...),验证器也是如此。无论伙伴类(Metadata Class)位于模型类的外部还是内部。

但是直接使用MetadataTypeAttribute与模型类而不是朋友类完美合作!

我可以给出这种分歧的唯一解释是与新出现的Microsoft Asp.Net核心技术,DLL过程和功能的重新定位有关。