Прекомпиляция проекта веб-приложения в VS БЕЗ проекта веб-развертывания? - PullRequest
0 голосов
/ 19 февраля 2011

Я хочу предварительно скомпилировать весь мой проект веб-приложения ASP.NET в Visual Studio 2010, главным образом, чтобы убедиться, что на страницах и в элементах управления нет ошибок.

Как я могу сделать это без использования проекта веб-развертывания? Я попытался использовать WDP, но у него есть чрезвычайно раздражающая ошибка, которая заставляет его компилировать все файлы в папке приложения, включая файлы, которые были «исключены». Это сводит с ума.

Чтобы было понятно, я понимаю, как скомпилировать мое приложение в VS. Я также знаю, как развернуть его. Здесь я хочу знать, как ПРЕДВАРИТЕЛЬНО все приложение (включая все файлы ASPX и ASCX) ДО развертывания. Это важно для меня, потому что это единственный способ убедиться в отсутствии ошибок в файлах ASPX или ASCX перед выполнением. Я понимаю, что для этого есть инструменты командной строки. Однако я хочу выполнить предварительную компиляцию внутри VS, чтобы я мог быстро исправить любые обнаруженные проблемы.

Так есть ли другой способ сделать это? Есть ли способ настроить команду «Опубликовать»?

Очень признателен за помощь, поскольку документация MS по этому вопросу разочаровывает, повторяет и носит обширный характер.

Brian

Ответы [ 4 ]

4 голосов
/ 03 сентября 2014

Спустя годы после вопроса, но некоторые люди могут найти его полезным. Я использую VS 2013, но ранее использовал это и в VS 2010.

Go to Tool/External Tools, Add button. 
Title: Pre Compile 
Command: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_compiler.exe 
Arguments: -p $(SolutionDir)\Web  -v / 
Initial directory: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ 
[TICK] : Use Output Window

Очевидно, измените путь на подходящий .net framework. Вы можете нажать на ошибки, и файл откроется в VS в правильной строке. Странно то, что иногда я запускаю его несколько раз и получаю разные результаты ...

Недостатком этого является то, что он не сообщает вам, когда это будет сделано (вы всегда можете проверить aspnet_compiler в проводнике задач!). Итак, я сделал пакетный файл DOS с единственной целью сказать «сделано» в окне вывода. Обратите внимание, что командная строка отличается от описанной выше, так как в этой версии я реплицировал командную строку, эффективно сгенерированную нашим собственным скриптом msbuild (он использует «фиксированные имена», например, для устранения ошибок прекомпилятора циклических ссылок). % ~ F1 - это поле ввода «аргумент» окна «Внешние инструменты» из VS.

Пакетный файл (precompile.cmd):

@echo C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -p "%~f1" -v / -f -c -fixednames c:\temp\SomeFolder
@c:
@cd C:\Windows\Microsoft.NET\Framework\v4.0.30319\
@C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -p "%~f1" -v / -f -c -fixednames c:\temp\SomeFolder
@echo.
@echo Done.

В ВС:

Go to Tool/External Tools, Add button. 
Title: Pre Compile 2
Command: C:\mypath\precompile.cmd
Arguments: $(SolutionDir)\Web
Initial directory: [leave blank]
[TICK] : Use Output Window

PS: не уверен, как / если на это влияют веб-сайты или веб-приложения.

1 голос
/ 20 февраля 2011

Итак, вот мое текущее решение, которое далеко от идеального.

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

  2. Я создал новую конфигурацию сборки под названием «Прекомпиляция».

  3. В файле проекта я создал новую «цель», которая запускается только при активной конфигурации прекомпиляции (синтаксис см. Ниже). Это в основном говорит MSBuild запускать дополнительное задание после компиляции; то есть он запускает Aspnet_compiler для предварительной компиляции сайта. Он берет файлы сайта, созданные One-Click, предварительно компилирует их и выводит во вторую локальную папку. Если во время прекомпиляции обнаруживаются какие-либо ошибки, они отображаются в VS.

Это полностью запеченное решение с глюками. Самым большим является то, что любые ошибки, обнаруженные Aspnet_compiler, указывают на файлы в папке One-Click, поэтому, если вы дважды щелкнете по ним, они приведут вас к этим файлам, а не к файлам решения.

Хорошо, что я могу контролировать прекомпиляцию с помощью этого метода. Задача не запускается, пока я не выберу конфигурацию прекомпиляции. Но все это кажется окольным и глупым.

Возможно, появится лучшее решение.

Вот элемент, который я добавил в файл проекта, в конце, внутри основного элемента <Project>:

<Target Name="AfterCompile"
     Condition=" '$(Configuration)|$(Platform)' == 'Precompile|AnyCPU' ">

    <AspNetCompiler PhysicalPath="[Source files created by One-click]"
    VirtualPath="/" Force="true"
    TargetPath="[Destination folder]" />
</Target>
0 голосов
/ 20 февраля 2011

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

See the Build website as a part of the solution option

0 голосов
/ 19 февраля 2011

Постройте решение.Убедитесь, что веб-приложение не исключено из сборки, но проверяете страницы свойств решений.

Не можете вспомнить, предназначено ли «Исключить веб-сайт при создании решения» для проекта веб-приложения / веб-сайта или обоих.*

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