Ссылка на платформу библиотеки классов 4.6.1 из asp.net core .net full framework 4.6.1

Я новичок в основном приложении .net. Я разрабатываю ядро ​​​​asp.net (1.0 -> MVC6), ориентированное на «net461» (полная структура). Ниже приведен проект.json:

    {
  "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"
}

Мне нужно было добавить целевую структуру библиотеки классов 4.6.1 под названием OmniPayDataModel (используя telerik.DataAccess.Core):

введите здесь описание изображения

Моя проблема в том, что я не могу ссылаться на OmniPayDataModel.dll из моего проекта asp.net mvc, выдавая следующую ошибку:

введите здесь описание изображения

Тем не менее, можно добавить csproj в качестве ссылок (нацеливание на проект, как показывает project.json), но по некоторым причинам, когда я создаю/перестраиваю OmniPayDataModel.dll, никакие изменения не отражаются при запуске решения (например: я добавляю аннотации данных, такие как отображаемое имя, к моему модели классов, однако <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 в качестве ссылки, но изменения не отражены?


person Aldemar Cuartas Carvajal    schedule 14.07.2016    source источник


Ответы (1)


Я нашел решение самостоятельно.

Для основного проекта Asp.Net нет ничего неудобного в том, чтобы ссылаться на csproj (библиотеку классов), и изменения, внесенные в эту библиотеку классов, хорошо отражаются. Я столкнулся с проблемой, которая заставила меня приписать ее несовместимости ссылок, когда корневая проблема указывает на функциональность атрибута MetadataType в основном проекте Asp.Net.

Мне пришлось использовать ModelMetadataTypeAttribute вместо MetadataTypeAttribute из сборки Microsoft.AspNetCore.Mvc.Core. Украшение класса метаданных (класса друзей) следует той же методологии использования Display(...), DisplayName(...), что и для валидаторов. Независимо от того, находится ли вспомогательный класс (класс метаданных) снаружи или внутри класса модели.

Однако использование MetadataTypeAttribute непосредственно с классом модели вместо класса-приятеля работает отлично!

Единственное объяснение, которое я могу дать этому расхождению, связано с новой появляющейся базовой технологией Microsoft Asp.Net, перемещением процесса DLL и функциональных возможностей.

person Aldemar Cuartas Carvajal    schedule 22.07.2016