Проблемы со ссылками на пакеты NuGet в новом шаблоне библиотеки классов Nuget в Visual Studio 2015

Недавно я работал с предварительной версией VS2015, в которой была опция «Библиотека классов ASP.NET 5», которая с тех пор была изменена в RTM на просто «Библиотека классов (пакет)». С описанием PREVIEW - A project template for creation a class library as a NuGet package that can target any platform

Недавно я создал один из этих новых проектов библиотеки классов и добавил его в решение, которое также включало проект ASP.NET 5. Я использовал консоль диспетчера пакетов, чтобы добавить ссылки на Entity Framework 7 в оба проекта, которые работали нормально, добавив правильный текст в файлы project.json в обоих проектах (раздел «Справочник» в VS также обновился соответствующим образом). Но при попытке добавить using Microsoft.Data.Entity; в мой проект библиотеки классов я вообще не могу ссылаться на него. Он отлично работает в проекте ASP.NET.

Intellisense дает мне варианты для «Microsoft.CSharp» и еще одного пространства имен, но не «Данные». Я пытался создать совершенно новое решение с нуля, но это все еще не помогло.

Я также пытался добавить ссылки на материал dnx XUnit в проект в соответствии с рекомендациями их веб-сайта, но это тоже не сработало.

EDIT: я думаю, что проблема кроется где-то в моникере dotnet Target Framework (TFM), который, похоже, был введен в DNX SDK 1.0.0-beta5, поскольку при использовании dnx451 в 1.0.0-beta4 проблем не возникает


person BenM    schedule 09.09.2015    source источник
comment
есть ли версия, указанная в project.json или global.json? Я предполагаю, что это тот, который поставляется с VS2015.   -  person Devon Burriss    schedule 09.09.2015
comment
Шаблон библиотеки классов не содержит файл global.json, а только файл project.json. Он содержит раздел версии 1.0.0-*, который относится к самому проекту, а не ко всему, на что он ссылается. Зайдя в свойства, я вижу, что версия DNX SDK 1.0.0-beta5.   -  person BenM    schedule 09.09.2015


Ответы (4)


Я только что прошел процесс добавления 2 проектов. Библиотека классов и проект mvc 6. Я мог бы продублировать вашу проблему. Чтобы исправить это, я отредактировал библиотеку классов project.json и изменил свойство в разделе «frameworks» с dotnet на 2 фреймворка dnx451 и dnxcore50 как находится в веб-проекте. Надеюсь это поможет.

person Devon Burriss    schedule 09.09.2015
comment
Я тоже подумывал об этом. Однако мне не нужно, поскольку свойство dotnet должно быть тем, которое мы используем в соответствии с Microsoft. Я бы предпочел, чтобы они исправили это, так как похоже, что они хотят, чтобы мы использовали dotnet по умолчанию в будущем, и я не хочу возвращаться к старому способу делать это. Но спасибо за вашу помощь до сих пор. - person BenM; 10.09.2015

Удалите все файлы в %userprofile%\.dnx\packages, а затем в окне диспетчера пакетов VS2015 выполните «dnu restore».

person KenL    schedule 10.09.2015
comment
Я попробовал это, и это устранило проблему, возникшую после восстановления deebo dnu ниже, но я по-прежнему не могу получить доступ ни к одному из классов EF. - person BenM; 10.09.2015

Наконец-то я нашел сообщение на github от автора xunit, Брэда Уилсона, который утверждает, что в настоящее время TFM dotnet не работает так, как вы ожидаете, и что dnx451 и dnxcore50 лучше подходят для TFM.

Комментарий Брэда Уилсона

Ссылка на комментарий

person BenM    schedule 10.09.2015

Попробуйте открыть терминал командной строки в каталоге, содержащем проект библиотеки классов, и введите

dnu restore
person Devon Burriss    schedule 09.09.2015
comment
Я попробовал это, и на самом деле теперь у меня много ошибок о пространствах имен, таких как система, Microsoft и т. Д., Это усугубило ситуацию! - person BenM; 09.09.2015
comment
Ну, это может быть больше информации. Сломанный действительно сломан. github.com/aspnet/Announcements/issues/53 и github.com/aspnet/Announcements/issues/55 упоминаются изменения пространства имен, поэтому, возможно, он ссылается на неправильную версию. Что он говорит по умолчанию, если вы запускаете список dnvm - person Devon Burriss; 09.09.2015