Попытка добавить строго типизированное представление не находит классов в проекте MVC - PullRequest
11 голосов
/ 23 сентября 2010

У меня очень странная проблема. Всякий раз, когда я пытаюсь использовать диалоговое окно «Добавить представление» в ASP.NET MVC2, а затем пытаюсь «Создать строго типизированное представление», выбрав «Просмотреть класс данных» из выпадающего списка доступных классов, ни один из классов («моделей») ") в моем проекте MVC появляются.

Очень странная часть - это все сборки, на которые ссылается мой проект MVC, даже другие проекты в решении, их классы отображаются. Я пытался очистить, перестроить, очистить папку obj, но каждый раз по какой-то причине ни один из классов в моей реальной сборке MVC не появляется. Раньше все работало нормально, но теперь уже нет, и я не могу придумать ничего, что изменилось.

Кто-нибудь сталкивался с этой проблемой раньше? Спасибо за помощь!

Изображение примера:

http://imgur.com/47itE.png

Ответы [ 5 ]

13 голосов
/ 18 января 2012

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

2 голосов
/ 03 марта 2011

Разобрался, вот решение:

Проект MVC ссылался на группу сборок контракта на обслуживание, где ссылался на «CommonServiceContractAssembly.dll». Проект MVC также ссылался на «CommonServiceContractAssembly.dll». Проект MVC и сборки контракта на обслуживание были построены со ссылкой на слегка отличающиеся версии «CommonServiceContractAssembly.dll»

Когда Visual Studio 2010 размышлял на всех сборках, на которые есть ссылки, «Создать строго типизированное представление», я полагаю, что он не знал, как обращаться с немного другой версией «CommonServiceContractAssembly.dll», поэтому отображать отраженные возможности «строго типизированной модели» для любых сборок, зависящих от «CommonServiceContractAssembly.dll».

Исправление заключается в том, чтобы фактически заставить домен приложения Visual Studio 2010 использовать правильную версию «CommonServiceContractAssembly.dll» при запуске Visual Studio 2010. Это было достигнуто с помощью события Post Build следующим образом:

REM. Это необходимо для правильной работы генерации Т4 из моделей. copy "$ (TargetDir)" CommonServiceContractAssembly.dll "" $ (DevEnvDir) PublicAssemblies \ "/ Y

Поэтому я копирую файл «CommonServiceContractAssembly.dll», на который ссылается «везде», туда, где Visual Studio его загрузит. После того, как я это сделал, все заработало нормально.

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

1 голос
/ 17 мая 2011

Пожалуйста, убедитесь, что вы помечаете их как «Public», и скомпилируйте их один раз, прежде чем открывать диалоговое окно AddView.

0 голосов
/ 16 января 2015

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

0 голосов
/ 23 сентября 2010

Некоторые типы из вашего проекта отфильтровываются этим диалогом (например, все типы, заканчивающиеся на 'Controller', или все типы в пространстве имен System или Microsoft). Возможно, в вашем проекте нет типов, которые могли бы пройти через фильтры диалога.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...