Как сделать процесс отладки приложений ASP.NET Sharepoint менее затратным по времени?

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

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

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

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
6
0
3 356
8

Ответы 8

And you can change your code "on the fly" without restarting the server

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

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

Я думаю, вы пропустили ссылку "здесь"? И будет ли это работать с SharePoint?

shapr 17.06.2009 19:28

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

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

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

-1: вы не объясняете последствия этого для безопасности или изменения в поведении при развертывании в среде SharePoint с более строгим уровнем доверия.

Alex Angas 16.06.2009 15:36

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

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

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

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

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

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

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

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

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

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

gacutil / u yourassemblynamegoeshere gacutil / я yourdllgoeshere.dll

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

Кажется, вы пытаетесь сказать 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 щелчка и около минуты, но я полагаю, что это могло бы быть быстрее.

Другие вопросы по теме