Проекты веб-развертывания 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, но никто не пострадал, если они там. Так зачем беспокоиться?
Ответ 3
Возможно, вам стоит взглянуть на Поставщики виртуальных путей (KB как здесь) в ASP.NET.
Кредит на это предложение должен перейти на Cheeso, и его вопрос ответил на вопрос:
Могу ли я получить развертывание типа WAR WAR с ASP.NET?
Ответ 4
Я не знаю о файлах .compiled, но вы можете настроить свои серверы для обновления своих файлов с помощью subversion, а не вручную копировать файлы при компиляции.
Итак, вы должны скомпилировать файлы, используя проект развертывания в Интернете (а не в одну сборку), поместить их в репозиторий, созданный для этой цели, и на каждом сервере просто выполните обновление svn, чтобы автоматически выбирать и сравнивать файлы.
Я знаю, что это не то, о чем вы просили напрямую, но это может быть путь для изучения.
Ответ 5
Добавить "Исключить фильтр" в проект развертывания:
- В проекте развертывания.
- Щелкните правой кнопкой мыши на файлах содержимого.
- Нажмите "Исключить фильтр".
- Добавить "*.Compiled"
- нажмите "ОК".
и т.д.
Ответ 6
Я помню, в дни, когда я не могу делать веб-приложение с помощью VWD Express, я использую nant script для компиляции проекта в одну DLL и развертывания, что будет работать (поэтому мне не нужно полное VS для развертывания dll тоже), поэтому, если вы действительно не хотите использовать свой проект для веб-приложения, возможно, это также путь для проверки.
Ответ 7
Вы можете избавиться от файлов .compiled
с помощью aspnet_merge с опцией -r
.
Удаляет файлы .compiled для основной сборки кода (код в папке App_Code). Не используйте эту опцию, если ваше приложение содержит ссылку на явный тип ссылки на сборку основного кода.
Ответ 8
Если вы публикуете свой код как обновляемый (в настройках публикации), эти файлы генерируются. Снимите этот флажок и опубликуйте. Это старый вопрос, который я знаю, но для этого нет однозначных ответов.