Как отладить решение / функцию Sharepoint через Visual studio? - PullRequest
4 голосов
/ 06 апреля 2010

Недавно я пытался установить веб-часть с помощью утилиты wspbuilder на сайт Sharepoint. Я создал, построил и развернул проект для 12 улья. После этого установите решение через сайт администрирования Cental и активируйте в семействе сайтов.

Мне просто интересно, как я могу отладить сложную функцию / решение? Поскольку оба процесса (сборка-развертывание и активация) полностью независимы, как я могу прикрепить процесс к рабочему процессу?

Ответы [ 5 ]

3 голосов
/ 06 апреля 2010

В контекстном меню WSPBuilder есть опция «Присоединить к рабочему процессу IIS». Пока приложение загружено (обычно это означает, что вы обращались к странице на сайте SharePoint, прежде чем пытаться подключиться), а код, развернутый в SharePoint, совпадает с кодом, который есть в Visual Studio, вы должны иметь возможность устанавливать точки останова и пошагово пройдитесь по коду.

2 голосов
/ 06 апреля 2010

Иногда сложно определить, к какому процессу w3wp присоединиться. Попробуйте добавить следующее в свой код, чтобы войти в отладчик:

System.Diagnostics.Debugger.Break();

2 голосов
/ 06 апреля 2010

Во-первых, вам нужно открыть браузер и перейти на соответствующий веб-сайт SharePoint. Затем в Visual Studio перейдите в «Отладка -> Присоединить к процессу» и найдите процесс w3wp.exe, связанный с веб-сайтом Sharepoint, который вы хотите отлаживать. Нажмите на нее (процесс), а затем нажмите кнопку Присоединить. Теперь вы сможете отлаживать любые действия, связанные с вашей функцией SharePoint.

1 голос
/ 11 января 2011

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

Зайдите в Debug -> Attach to Process и найдите процесс w3wp.exe, связанный с веб-сайтом Sharepoint, который вы хотите отлаживать

Но я получаю "Точки останова не будут поражены, символы для этого документа в настоящее время не загружены". Должен ли я зарегистрировать специально развернутое решение dll, используя GACUTIL? Должен ли я копировать файлы PDB в каком-либо конкретном месте? Что мне здесь не хватает?

1 голос
/ 07 мая 2010
System.Diagnostics.Debugger.Break()

Как предположил Мухимби, в некоторых случаях это действительно очень полезно. Скажем, вы хотите отлаживать пользовательский код (например, событие feature_deactivating), когда он может быть вызван с помощью stsadm, а не браузера. (например, вам придется использовать stsadm для деактивации функции, когда функция скрыта в пользовательском интерфейсе). При использовании stsadm вы не можете подключиться к cmd.exe, потому что это отдельный процесс. Если вы наберете команду и нажмете клавишу ввода, а затем найдете ее идентификатор процесса stsadm.exe, к которому присоединиться, будет слишком поздно. В подобных ситуациях приведенная выше команда является наиболее простым и легким решением

...