Создание шаблонов в .Net Core с несколькими проектами в решении

Я создал приложение .Net Core MVC6, ориентированное на net461. Я использовал хорошо знакомую мне структуру проекта, в которой классы данных, модели и обслуживания помещаются в отдельные проекты библиотек классов, а веб-проект ссылается на них.

Когда я пытаюсь создать каркас контроллера, я получаю сообщение об ошибке, что для модели, которую я создаю, существует несколько совпадающих типов.

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

Кто-нибудь еще видел эту же проблему? Есть ли обходной путь, чтобы по-прежнему использовать этот тип архитектуры?

Обновить

Я начал другой проект и всегда получаю эту проблему. Я получаю эту ошибку, когда использую только 1 дополнительный проект для моделей. В приложении ошибка, которую я получаю.

Ошибка шаблона

Обновление 2

Когда контекст и модель находятся в одном проекте, я получаю эту ошибку.

Ошибка редактирования dbContext


person David Newberry    schedule 05.06.2016    source источник
comment
Привет, не уверен, что это связано, но, вероятно, нет, но у меня проблемы с вызовом классов, расположенных в другом проекте в том же решении. Решение компилируется, но не может вызывать класс как основной проект, даже если на него ссылаются, см. этот класс/сборку. такая же проблема? Я разместил проект на github github.com/developer9969/ProjToProjReference.   -  person developer9969    schedule 06.06.2016
comment
@ developer9969 У вас есть решарпер? Если да, есть ли у вас ошибки сборки или просто intellisense? Resharper еще не полностью поддерживает rc2. blog.jetbrains.com /dotnet/27/05/2016/   -  person David Newberry    schedule 06.06.2016
comment
да, у меня есть resharper, решение компилируется, но если я пытаюсь вызвать класс в проекте в решениях, я не могу, потому что Visual Studio не показывает мне новый класс ни в операторах использования, ни путем его создания.   -  person developer9969    schedule 06.06.2016
comment
да, вы правы, отключил resharper, и мой intellisense теперь работает. Он одурачил меня на все выходные.GRRRRRRR.СПАСИБО!   -  person developer9969    schedule 06.06.2016
comment
@ developer9969 Кстати, я не полностью отключил Resharper. Я просто добавил папку Views в игнор-лист в Resharper => Options => Code Inspection => Settings => Elements to skip. Кажется, это работает нормально и позволяет мне использовать другие функции Resharper, такие как преобразование в LINQ и т. д.   -  person David Newberry    schedule 07.06.2016
comment
До сих пор не нашел решение моей проблемы. На данный момент я прибегал к хранению всех файлов в одном решении. Я воссоздал свою проблему на нескольких машинах, поэтому я не верю, что я единственный, кто видит такое поведение. Кто-нибудь может подтвердить, что это ошибка?   -  person David Newberry    schedule 07.06.2016


Ответы (1)


Не могу оставить комментарий, поэтому вместо этого я должен написать ответ. У меня также была такая же проблема, и я открыл ее в репозитории Scaffolding github. Вот ответ:

в настоящее время существует проблема с скаффолдингом, заключающаяся в том, что он не поддерживает должным образом классы моделей за пределами текущего проекта.

В качестве обходного пути вы можете временно добавить модель в свой веб-проект, а затем переместить ее в проекты BLL/DAL после формирования шаблонов.

Кроме того, они также открыли эту проблему как ошибку, цитируя:

Скаффолдинг завершается сбоем, если класс модели находится в зависимости (проект/библиотека) от проекта, в котором выполняется формирование каркаса. #251

Проект A зависит от проекта B. У проекта B есть класс модели. Если вы попытаетесь запустить строительные леса в проекте A, используя класс модели из проекта B, произойдет сбой со следующей ошибкой: Тип модели не возвращен для типа:

Следовательно, начиная с RC2, это ошибка в инструментарии создания лесов.

person ar27111994    schedule 14.06.2016
comment
Спасибо. Это пример хорошо изученного ответа, а также обходной путь. - person David Newberry; 14.06.2016