从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:
我的问题是,我可以“T从我的asp.net MVC项目抛出下面的错误引用OmniPayDataModel.dll:
但是,可以添加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,而不是MetadataTypeAttribute从Microsoft.AspNetCore.Mvc.Core组装。装饰元数据类(好友类)遵循相同的方法,使用Display(...),DisplayName(...),验证器也是如此。无论伙伴类(Metadata Class)位于模型类的外部还是内部。
但是直接使用MetadataTypeAttribute与模型类而不是朋友类完美合作!
我可以给出这种分歧的唯一解释是与新出现的Microsoft Asp.Net核心技术,DLL过程和功能的重新定位有关。