Как скомпилировать aspx-страницы с cruise control.net

#asp.net #msbuild #cruisecontrol.net #aspnet-compiler

#asp.net #msbuild #cruisecontrol.net #aspnet-компилятор

Вопрос:

Я настроил круиз-контроль.Net 1.6.7981.1 для ASP.Net проект. В настоящее время он корректно создается с помощью MSBuild. Конфигурационный файл MSBuild настроен следующим образом

 <msbuild>
    <executable>c:WindowsMicrosoft.NetFrameworkv3.5MSBuild.exe</executable>
    <workingDirectory>C:MyProjecttrunk</workingDirectory>
    <projectFile>MyProject.sln</projectFile>
    <buildArgs>/t:Rebuild /p:Configuration=Release /v:m</buildArgs>
    <targets>Clean;Build</targets>
    <timeout>1200</timeout>
</msbuild>
  

Я полагаю, что, поскольку I конфигурация настроена на выпуск, aspx-страницы компилируются как часть сборки. Однако, если я удалю asp:ScriptManager тег со страницы, которая требует его запуска, сборка все равно завершится успешно, хотя при загрузке страницы это приводит к следующей ошибке.

Для элемента управления с идентификатором ‘MyControl’ требуется ScriptManager на странице. ScriptManager должен отображаться перед любыми элементами управления, которым это необходимо.

Даже когда я вручную с

 C:WINDOWSMicrosoft.NETFrameworkv2.0.50727aspnet_compiler -v / -c -errorstack -p C:MyProjecttrunkMyProject
  

страница по-прежнему создается без каких-либо ошибок.

Я действительно хочу, чтобы cruise control завершал сборку с ошибкой, если какие-либо ошибки попали в сборку. Кто-нибудь знает, как этого добиться?

Комментарии:

1. Звучит так, как будто это ASP.NET ошибка во время выполнения не ошибка во время компиляции — вы уверены, что сможете ее перехватить? Вы могли бы заставить CruiseControl использовать Selenium для запуска теста с разделением ссылок на вашем развернутом сайте — мы включили это в наши модульные тесты, поэтому CC вызывает nunit как часть сборки, и nunit запускает тест.

2. @Rup это может быть ошибка во время выполнения, но я бы подумал, что это должна быть ошибка во время компиляции. Работает ли Selenium со страницами, требующими входа в систему?

3. Да, Selenium автоматизирует реальный браузер, например Firefox, поэтому вам просто нужно написать скрипт, чтобы сначала заполнить форму входа. (Это означает, что вам необходимо провести интерактивный сеанс на вашем сервере CI, однако для того, чтобы у браузера был рабочий стол для запуска.)

4. @Rup Как интегрировать Selenium с Cruise Control. Net, ты просто экспортируешь код для создания модульного теста? Знаете ли вы какие-либо статьи или сообщения в блоге о настройке Selenium с помощью Cruise Control.Net ?

5. Я не знаю, извините — кто-то другой из команды настроил это. У нас есть несколько классов в нашем проекте модульного тестирования (на основе NUnit), которые ссылаются на ThoughtWorks. Selenium.Core / IntegrationTests / UnitTests сборки; в нашей настройке тестового устройства мы создаем новый объект DefaultSelenium и запускаем его, затем открываем домашнюю страницу приложения с 60-секундным таймаутом и, очевидно, останавливаем этот объект браузера в тестировании демонтажа. В тестах этого класса вы можете затем загружать отдельные страницы, считывать все ссылки со страницы и распределять их, проверяя в каждой точке, что вы не получаете сообщение «Ошибка сервера» или подобное на только что загруженной странице

Ответ №1:

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