Проект ASP.NET MVC3 не всегда публикует все виды/контент

Это безумие, но я не могу получить все мои просмотры/контент/скрипты, опубликованные при публикации сайта. Похоже, что это происходит, когда представление или контент напрямую не ссылаются на мой проект, но используются другой сборкой в ​​моем проекте. Поэтому я мог бы:

  • ExternalAssembly.dll ссылается (публикуется)
  • Мне нужно ExternalLogin.cshtml в моем основном проекте, в моей папке views
  • ExternalLogin.cshtml не публикуется

Сейчас у меня есть script, который копирует все в папке "Представления" и выгружает его туда, где я хочу, чтобы он был развернут, но VS должен сделать это для меня. Что я делаю неправильно?

Ответы

Ответ 1

Итак, ваши файлы представлений находятся в другом проекте или папке вне вашего текущего проекта? Обычно файлы должны существовать в проекте веб-сайта, в нем просматривается папка, а не снаружи, а действие сборки должно быть установлено на Content, а не для копирования в выходную папку. Но есть некоторые обходные пути:

  • Дублируйте их в папку просмотра вашего сайта и убедитесь, что они отмечены контентом (как указано в другом ответе). Однако стоит отметить, что вы можете добавить их как "Связанные файлы" в visual studio, что фактически позволяет им существовать в двух местах в иерархии без необходимости существовать в двух местах на диске: http://support.microsoft.com/kb/306234
  • Если у вас есть контроль над внешней библиотекой, вы можете скомпилировать их в виде встроенных ресурсов или использовать Razor Generator или что-то подобное и использовать настраиваемый механизм просмотра для их возврата: Как я могу заставить ASP.NET MVC 3 использовать файлы вида (aspx, ascx) из внешней сборки на моем веб-сайте?
  • Вручную поставьте копии в XML-сборке .csproj с помощью задачи Копировать: http://msdn.microsoft.com/en-us/library/3e54c37h.aspx (обратите внимание, что это заставит его работать визуальная студия делает то, что вы делаете сейчас, так как она будет частью сборки Visual Studio, если вы добавите ее в цель AfterBuild или что-то еще)

Ответ 2

Когда вы нажимаете на один, если эти файлы являются действиями сборки для него в свойствах? Содержание.... или? Установите для контента.