Ошибка добавления ссылки на проект библиотеки классов в ASP.NET 5 (Core)
Привет, сначала я знаю, что схожие вопросы были заданы раньше, но они устарели, я использую Visual Studio 2015 rtm и ASP.NET 5 beta 6.
Я пытаюсь добавить ссылку на обычный (я не vnext) проект библиотеки классов для моего веб-приложения vnext. Если я сделаю следующее:
-
Создайте новый проект веб-приложения
-
Удалите фреймворк dnxcore50 из project.json
-
Добавить новый проект для обычной библиотеки классов
-
Вручную переместить проект библиотеки классов в папку /src (иначе я получаю сообщение об ошибке "Не удалось разрешить зависимость MyClassLibrary1 >= 1.0.0- *.)
-
Добавить ссылку на эту библиотеку классов
Теперь он строит ОК, но если я попытаюсь добавить "с помощью 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"
}
}
Ответы
Ответ 1
Вот как я это сделал, используя beta6 (UPDATE: он по-прежнему действителен для RC1 UPDATE 1).
- Удалите фреймворки = > dnxcore из вашего project.json(вы все равно не можете настроить таргетинг с помощью полных библиотек классов .net)
- В целевом проекте щелкните правой кнопкой мыши ссылку Ссылки → Добавить ссылку
- Перейдите и выберите ссылку dll, которую вы хотите добавить.
Это добавит ссылку в ваш файл project.json.
За кулисами dll копируется в каталог /lib в вашем решении и " проект оболочки", и только файл project.json создается в папке /wrap. Проект оболочки описан здесь (недостаточно хорошо): https://github.com/aspnet/Home/wiki/Project.json-file#bin-syntax-wrapping-a-dll
Что это! Я только что протестировал этот сценарий. Надеюсь, это поможет.
Ответ 2
Если кто-то еще борется с этой конкретной ошибкой, ключ должен добавить ссылку, "просматривая" фактический файл при добавлении ссылки, а не используя вкладку "проект".
Это, похоже, не сохраняет путь, но добавляет ссылку на project.json как обычно. Очевидно, ошибка (beta7) на момент написания этого.
Ответ 3
Вот как я это сделал в ASPT.NET 5 RC 1 Обновление 1:
- Добавить ссылку на проект
-
Откройте project.json
, внутри "frameworks":
node, удалите строку "dnxcore50": { }
(JSON не разрешает комментарий). Когда вы сохраняете json файл, ссылка DNX Core 5
должна быть немедленно удалена.
-
Создайте проект. Он должен успешно строиться.
-
Положите "dnxcore50": { }
назад. Он не возвращает обратно DNX 5 Core.
Ответ 4
Чтобы добавить обычный .NET-проект в версию больше 4.5.1, просто удалите dnxcore и переименуйте dnx451 в dnx461
Ответ 5
Эти ответы действительно помогли мне понять это. В моем случае очистка вещей в папке "wrap" решения разрешила ошибки сборки. Я переименовал некоторые библиотеки классов, и старые были все еще там. Удаление старых проектов и обновление файлов project.json в существующих проектах сделали трюк. Убедитесь, что зависимости в файлах project.json почитают правильные проекты.
Вот пример:
"dependencies": {
"DomainRepository": "1.0.0-*",
"Domain": "1.0.0-*",
"DomainContract": "1.0.0-*"
}
Ответ 6
Это ошибка в настоящее время. Здесь ссылка, чтобы вы могли видеть, когда она закрывается:
https://github.com/aspnet/Tooling/issues/245