Проекты веб-развертывания ASP.NET: избавление от .compiled файлов

Я использую проект веб-развертывания в Visual Studio 2008, чтобы подготовить мое приложение ASP.NET (веб-приложение ASP.NET, а не веб-приложение ASP.NET сайт) для копирования на несколько серверов. Мне нужно скопировать файлы на локальных промежуточных серверах, на разных серверах через FTP, и иногда мне приходится их извлекать с серверов клиентов.

Итак, было бы неплохо иметь все файлы для развертывания в компактной форме без необходимости проводить много сравнения между источником и получателем. Проекты веб-развертывания имеют эту приятную особенность: скомпилируйте все ваши файлы aspx и ascx в одну (дополнительную) сборку.

Я как-то узнал как избавиться от файлов-заполнителей aspx на сервере, теперь я хотел бы знать, есть ли (возможно, самодельный) способ избавиться от этих .compiled файлов.

Из Блог Рика Страгла:

Файл .Compiled - файл маркера для каждой страницы и управления в Интернете сайта и определяет используемый класс внутри сборки. Эти файлы не являются необязательными, поскольку они отображают ASPX страниц к соответствующему предварительно скомпилированному классов в предварительно скомпилированных сборках. Если вы удалите файл .Compiled, страница, на которой он будет отображаться, не сможет выполнить, и вы получите неприятное исполнение ошибка.

Кто-нибудь есть с творческой идеей, возможно, используя модуль/обработчик, который перехватывает проверку против файлов .compiled в папке bin?

Ответы

Ответ 1

Файл .compile происходит от предварительной компиляции при развертывании. Таким образом, у вас есть 3 варианта:

  • Сохраните файл .compiled
  • Не компилировать и развертывать исходный код
  • Включение этого веб-приложения вместо веб-сайта и компиляция в виде сборки

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

Ответ 2

Мне тоже не нравятся файлы .compiled, но никто не пострадал, если они там. Так зачем беспокоиться?

Ответ 4

Я не знаю о файлах .compiled, но вы можете настроить свои серверы для обновления своих файлов с помощью subversion, а не вручную копировать файлы при компиляции.

Итак, вы должны скомпилировать файлы, используя проект развертывания в Интернете (а не в одну сборку), поместить их в репозиторий, созданный для этой цели, и на каждом сервере просто выполните обновление svn, чтобы автоматически выбирать и сравнивать файлы.

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

Ответ 5

Добавить "Исключить фильтр" в проект развертывания:

  • В проекте развертывания.
  • Щелкните правой кнопкой мыши на файлах содержимого.
  • Нажмите "Исключить фильтр".
  • Добавить "*.Compiled"
  • нажмите "ОК".

и т.д.

Ответ 6

Я помню, в дни, когда я не могу делать веб-приложение с помощью VWD Express, я использую nant script для компиляции проекта в одну DLL и развертывания, что будет работать (поэтому мне не нужно полное VS для развертывания dll тоже), поэтому, если вы действительно не хотите использовать свой проект для веб-приложения, возможно, это также путь для проверки.

Ответ 7

Вы можете избавиться от файлов .compiled с помощью aspnet_merge с опцией -r.

Удаляет файлы .compiled для основной сборки кода (код в папке App_Code). Не используйте эту опцию, если ваше приложение содержит ссылку на явный тип ссылки на сборку основного кода.

Ответ 8

Если вы публикуете свой код как обновляемый (в настройках публикации), эти файлы генерируются. Снимите этот флажок и опубликуйте. Это старый вопрос, который я знаю, но для этого нет однозначных ответов.