Проблема добавления ссылки на проект библиотеки классов в ASP.NET 5 (Core)

17

Привет, сначала я знаю, что схожие вопросы были заданы раньше, но они устарели, я использую Visual Studio 2015 rtm и ASP.NET 5 beta 6.

Я пытаюсь добавить ссылку на обычный (я не vnext) проект библиотеки классов для моего веб-приложения vnext. Если я сделаю следующее:

  1. Создайте новый проект веб-приложения

  2. Удалите фреймворк dnxcore50 из project.json

  3. Добавить новый проект для обычной библиотеки классов

  4. Вручную переместите проект библиотеки классов в папку / src (в противном случае я получаю сообщение об ошибке). Зависимость MyClassLibrary1 & gt; = 1.0.0- * не может быть разрешена. ")

  5. Добавить ссылку на эту библиотеку классов

Теперь он строит ОК, но если я попытаюсь добавить «с помощью MyClassLibrary1», он говорит, что MyClassLibrary1 не существует в текущем контексте.

Если я затем изменил библиотеку классов для целевого профиля клиента .NET 4 (по умолчанию это было 4.6), он работает правильно, однако .NET 4 полный или 4.5 не работает. Мне нужно, чтобы оно было 4.5 или выше, поскольку мне нужно ссылаться на различные пакеты, которые этого требуют. В идеале все будет просто нацелено на 4.6.

Это мой файл project.json:

{
  "webroot": "wwwroot",
  "userSecretsId": "aspnet5-WebApplication2-6767111e-0eba-42a4-9d68-4b6c20767518",
  "version": "1.0.0-*",

  "dependencies": {
    "EntityFramework.SqlServer": "7.0.0-beta6",
    "EntityFramework.Commands": "7.0.0-beta6",
    "Microsoft.AspNet.Mvc": "6.0.0-beta6",
    "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-beta6",
    "Microsoft.AspNet.Authentication.Cookies": "1.0.0-beta6",
    "Microsoft.AspNet.Authentication.Facebook": "1.0.0-beta6",
    "Microsoft.AspNet.Authentication.Google": "1.0.0-beta6",
    "Microsoft.AspNet.Authentication.MicrosoftAccount": "1.0.0-beta6",
    "Microsoft.AspNet.Authentication.Twitter": "1.0.0-beta6",
    "Microsoft.AspNet.Diagnostics": "1.0.0-beta6",
    "Microsoft.AspNet.Diagnostics.Entity": "7.0.0-beta6",
    "Microsoft.AspNet.Identity.EntityFramework": "3.0.0-beta6",
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta6",
    "Microsoft.AspNet.Server.WebListener": "1.0.0-beta6",
    "Microsoft.AspNet.StaticFiles": "1.0.0-beta6",
    "Microsoft.AspNet.Tooling.Razor": "1.0.0-beta6",
    "Microsoft.Framework.Configuration.Abstractions": "1.0.0-beta6",
    "Microsoft.Framework.Configuration.Json": "1.0.0-beta6",
    "Microsoft.Framework.Configuration.UserSecrets": "1.0.0-beta6",
    "Microsoft.Framework.Logging": "1.0.0-beta6",
    "Microsoft.Framework.Logging.Console": "1.0.0-beta6",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-beta6"
  },

  "commands": {
    "web": "Microsoft.AspNet.Hosting --config hosting.ini",
    "ef": "EntityFramework.Commands"
  },

  "frameworks": {
    "dnx451": {
      "dependencies": {
        "MyClassLibrary1": "1.0.0-*"
      }

    }
  },

  "exclude": [
    "wwwroot",
    "node_modules",
    "bower_components"
  ],
  "publishExclude": [
    "node_modules",
    "bower_components",
    "**.xproj",
    "**.user",
    "**.vspscc"
  ],
  "scripts": {
    "prepublish": [ "npm install", "bower install", "gulp clean", "gulp min" ]
  }
}

И мой файл global.json:

{
  "projects": [
    "src",
    "test",
    "wrap"
  ],
  "sdk": {
    "version": "1.0.0-beta6"
  }
}
    
задан Martin Richards 04.08.2015 в 10:45
источник
  • Я даже не могу построить после добавления проекта библиотеки классов в мое существующее решение проекта. Однако, если я начинаю заново, он работает, что может быть причиной. –  Randeep 10.02.2016 в 11:47
  • поднят в качестве основной проблемы aspnet: github.com/aspnet/Home/issues/1513 –  OzBob 22.12.2016 в 05:11

6 ответов

23

Вот как я это сделал, используя beta6 ( UPDATE: он по-прежнему действителен для RC1 UPDATE 1 ).

  1. Удалить рамки = & gt; dnxcore из вашего project.json (вы не можете настроить таргетинг на него, используя полные библиотеки классов .net)
  2. В целевом проекте щелкните правой кнопкой мыши по ссылкам = & gt; Добавить ссылку
  3. Перейдите и выберите ссылку dll, которую вы хотите добавить.

Это добавит ссылку в ваш файл project.json . За кулисами dll копируется в каталог / lib в вашем решении и « проект оболочки », и только файл project.json создается в папке / wrap. Проект оболочки описан здесь (недостаточно хорошо): Ссылка

Вот и все! Я только что протестировал этот сценарий. Надеюсь, это поможет.

    
ответ дан mbudnik 09.08.2015 в 13:32
источник
  • Отлично, я не нашел эту ссылку, документы, по-видимому, немного грубые. веселит. –  Martin Richards 09.08.2015 в 22:17
  • Очень благодарен за ваш ответ, мбудник. Первый раз кто-то сказал это ясно (что я нашел). Впервые я смог ссылаться и использовать свои собственные проекты библиотеки классов в многопроектном решении из ASP.NET 5 MVC 6 beta6 front-end проекта после тестирования многих других методологий из многих других, даже довольно недавних ответов здесь , Я говорю себе, чтобы держаться подальше от кровоточащего края, а затем каждый год я ступаю прямо в него, и моя нога срезается. –  StackOverflowUser 15.08.2015 в 08:46
  • В RC1 мне все еще нужно было отредактировать файл project.json вручную, чтобы изменить его на синтаксис bin {сборка, pdb} (см. документы GitHub). Кроме того, поскольку мои DLL-ссылки являются проектами в одном и том же решении, мне нужно было добавить их в качестве зависимостей проектов и убедиться, что сайт находится ниже их в Построителе проекта. –  zemien 22.01.2016 в 05:07
  • Таким образом, мы больше не можем добавлять ссылки на проекты? –  ewahner 10.02.2016 в 20:52
  • Я проверил в папке wrap на корневом lvl, и он волшебным образом разрешится другими членами команды сейчас. –  rfcdejong 16.02.2016 в 12:01
15

Если кто-то еще борется с этой конкретной ошибкой, ключ должен добавить ссылку, «просматривая» фактический файл при добавлении ссылки, а не используя вкладку «проект».

Это, похоже, не сохраняет путь, но добавляет ссылку на project.json как обычно. Очевидно, ошибка (beta7) на момент написания этого.

    
ответ дан JamesDill 04.09.2015 в 15:30
источник
  • Просто была эта ошибка, и это зафиксировало это, что-то вроде шутки. Добавив из проектов ссылку, похоже, не имеет против нее версии. –  Mark Homer 12.11.2015 в 13:27
  • У меня возникла эта проблема с проектом ASP.NET 5 MVC, ориентированным на пакетные библиотеки классов ASP.NET 5. Любая идея, как справиться с проблемой с упакованными проектами? Кстати, я использую RC1. –  Sam 27.12.2015 в 19:46
2

Вот как я это сделал в ASPT.NET 5 RC 1 Обновление 1:

  1. Добавить ссылку на проект
  2. Откройте project.json , внутри "frameworks": , удалите "dnxcore50": { } line (JSON не позволяет комментировать). Когда вы сохраняете json-файл, ссылка DNX Core 5 должна быть немедленно удалена.

  3. Создайте проект. Он должен успешно строиться.

  4. Поместите "dnxcore50": { } обратно. Он не возвращает обратно DNX 5 Core.

ответ дан Jeson Martajaya 18.01.2016 в 07:22
источник
1

Чтобы добавить обычный .NET-проект в версию больше 4.5.1, просто удалите dnxcore и переименуйте dnx451 в dnx461

    
ответ дан Adam Wyżgoł 18.01.2016 в 20:36
источник
  • Да, он строит. Я попытался добавить ссылку на библиотеку классов .NET 4.6.1 на основной веб-сайт ASP.NET. При запуске под IIS Express в браузере отображается сообщение «Этот сайт не может быть достигнут». Конструктор класса запуска не вызывается. –  Andez 30.04.2016 в 19:42
  • Проблема Smae здесь. Он создается, но сбой после запуска IISExpress debug (F5). –  Alan Araya 10.05.2016 в 14:45
1

Эти ответы действительно помогли мне понять это. В моем случае чистка вещей в папке «wrap» решения разрешила ошибки сборки. Я переименовал некоторые библиотеки классов, и старые были все еще там. Удаление старых проектов и обновление файлов project.json в существующих проектах сделали трюк. Убедитесь, что зависимости в файлах project.json почитают правильные проекты.

Вот пример:

  "dependencies": {
    "DomainRepository": "1.0.0-*",
    "Domain": "1.0.0-*",
    "DomainContract": "1.0.0-*"
  }
    
ответ дан James 26.05.2016 в 00:37
источник
0

Это ошибка в настоящее время. Вот ссылка, чтобы вы могли видеть, когда она закрывается: Ссылка

    
ответ дан Kevin Johnsrude 12.01.2016 в 03:14
источник