Как сделать процесс отладки приложений ASP.NET Sharepoint менее трудоемким? - PullRequest
6 голосов
/ 28 августа 2008

Я сравниваю это Java, где вы можете запустить сервер приложений в режиме отладки, а затем подключить IDE к серверу. И вы можете изменить свой код "на лету", не перезагружая сервер. Пока ваши изменения не влияют на сигнатуры или поля методов, вы можете просто нажать кнопку «Перекомпилировать» для класса, и сервер приложений (контейнер сервлета) перезагрузит класс.

Полагаю, это невозможно в ASP.NET, поскольку все классы упакованы в сборки, и вы не можете выгружать / перезагружать сборки, не так ли?

Таким образом, когда у вас есть страница .aspx и сборка, развернутая в GAC, и ваш код за изменениями, вы должны повторно развернуть сборку и перезагрузить IIS. Я говорю о приложениях Sharepoint, в частности, и я не уверен, нужно ли делать iisreset для частных сборок, но я думаю, что вы тоже.

Таким образом, лучший способ отладки aspx-страниц с кодом позади, я думаю, состоит в том, чтобы избавиться от кода на время активной отладки и перейти на страницу, затем, когда она более или менее работает, переместить ее обратно на код. (Это применимо только для страниц приложения в Sharepoint, страницы сайта не допускают встроенный код)

Как вы подходите к отладке ваших приложений ASP.NET, чтобы сделать их менее трудоемкими?

Ответы [ 8 ]

5 голосов
/ 07 октября 2008

Из Блог Мэтта Смита о том, как получить отладку F5 с помощью sharepoint. Очень крутой трюк.

  1. Создайте проект веб-приложения в Visual Studio (Файл -> Создать -> Проект -> Веб-приложение ASP.Net, а не Файл -> Создать -> Веб-сайт).
  2. Переместите файлы .csproj и .csproj.user вместе с папкой «Свойства» в C: \ inetpub \ wwwroot \ wss \ virtualdirectories \, где указано имя или номер веб-приложения, соответствующего сайту SharePoint, который вы ' Я хотел бы отладить.
  3. Присоединение проекта к существующему решению (например, проект STSDEV).
  4. Установить как стартовый проект (щелкните правой кнопкой мыши имя проекта, «Установить как стартовый проект»).
  5. Откройте свойства проекта (щелкните правой кнопкой мыши имя проекта, «Свойства») и нажмите
  6. В настройке «Серверы» нажмите «Использовать веб-сервер IIS», затем введите URL-адрес веб-приложения SharePoint, на котором вы хотите выполнить отладку, например, http://mymachine:99.
4 голосов
/ 28 августа 2008

Да, частные сборки НЕ требуется сброс IIS. Поэтому вам нужно просто xcopy новую версию в каталоге Bin приложения и обновить страницу (например, по событию VS пост-сборки, как я) Но есть некоторые компромиссы. Вам следует снизить уровень доверия в файле приложения web.config:

<system.web>
    ...
    <trust level="WSS_Medium" originUrl="" />
    ...
</system.web>

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

3 голосов
/ 02 сентября 2008

Если вы используете GAC, вы можете по крайней мере сделать iisapp.vbs /a "App Pool Name" /r вместо iisreset (быстрее перезапустить один пул приложений, чем перезапустить IIS).

1 голос
/ 07 октября 2008

Сначала разработайте на компьютере под управлением SharePoint. Предпочтительно это означает запуск Windows Server 2003 на виртуальном ПК или VMWare. Это позволит вам развертывать и отлаживать код SharePoint напрямую, а не копировать файлы между серверами и использовать удаленный отладчик.

Использование надстройки VS для упрощения процесса развертывания и отладки. Я использовал WSPBuilder , но я думаю, что есть другие. WSPBuilder имеет команды для развертывания решений, упаковки их в виде WSP и подключения вашего отладчика к локальному процессу IIS. Он не позволит вам добавлять / удалять сборки на лету, но вы можете устанавливать точки останова и запускать код через окно Immediate в VS.

В зависимости от того, как настроен ваш рабочий сервер, обычно рекомендуется разрабатывать на сервере с настройками безопасности «полный / доверие», включая запрещение блоков кода в файлах ASPX . Это делает отладку немного более сложной, но уменьшает количество неприятных сюрпризов, которые вы получите, когда ваш код будет наконец развернут в производство.

0 голосов
/ 23 декабря 2009

То, что вы пытаетесь сделать, это сказать Sharepoint: «Когда я начинаю отладку в Visual Studio, используйте версию библиотеки DLL, скомпилированной в каталоге проекта / bin / debug, вместо версии библиотеки DLL, которая зарегистрирован в GAC. " Я не решил эту проблему, но вот как я отлаживаю Sharepoint.

На компьютере разработчика установлены Win2008, IIS 7, MOSS 2007, VisStudio 2008 и WSP Builder. Внутри VS2008 добавлена ​​кнопка для присоединения к процессу w3p.exe, HOWTO Эндрю присоединяется к w3p

Файл решения имеет два проекта:
* Первый проект - .WSP, который развертывает все страницы приложения, включая DLL. Используйте пункты меню WSPBuilder для обработки создания и развертывания .WSP.
* Второй проект для DLL позади страниц.

Если вы хотите, чтобы DLL регулярно копировалась в GAC, добавьте событие пост-сборки в проект DLL, который копирует из / bin / Debug в GAC.

Но в эти дни я обнаружил, что только что перекомпилировал решение и затем развернул .WSP с помощью пунктов меню, а затем запустил отладчик с помощью кнопки. Для большинства моих проектов мне требуется клавиша F, 3 щелчка и около минуты, но, полагаю, это может быть быстрее.

0 голосов
/ 07 октября 2008

WSPBuilder Extensions имеет ярлык «развертывание в GAC», к сожалению, он никогда не работает для меня. Но это действительно быстрый способ кодировать-> компилировать-> тестировать.

Если вы не используете WSPBuilder Extensions, вы можете вместо этого открыть командную строку и запустить

gacutil / ura gacutil / i yourdllgoeshere.dll

Если вы делаете это часто, вы можете поместить его в событие после сборки или в пакетный файл. Кроме того, мне неясно, нужен ли gacutil / u (для удаления DLL в первую очередь).

0 голосов
/ 07 октября 2008

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

Если у вас также установлен TestDriven.NET, вы можете запускать отдельные тесты с помощью отладчика . Это было полезно.

0 голосов
/ 28 августа 2008

И вы можете изменить свой код "на лету", не перезагружая сервер

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

Это также должно решить ваши трудности с развертыванием сборки в GAC. Поскольку сервер обрабатывает все компиляции для проектов веб-сайтов, вам не придется повторно развертывать любые сборки при изменении файлов.

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