Visual Studio 디버거를 사용하여 SharePoint 솔루션을 디버그할 수 있습니다. 디버깅을 시작하면 Visual Studio에서 프로젝트 파일을 SharePoint 서버에 배포한 다음 웹 브라우저에서 SharePoint 사이트의 인스턴스를 엽니다. 다음 섹션에서는 Visual Studio에서 SharePoint 애플리케이션을 디버그하는 방법을 설명합니다.
디버깅 활성화
Visual Studio에서 SharePoint 솔루션을 처음 디버그하면 web.config 파일이 디버깅을 사용하도록 구성되지 않았다는 경고가 표시됩니다. (web.config 파일은 SharePoint 서버를 설치할 때 만들어집니다. 자세한 내용은 Web.config 파일 작업을 참조하세요.) 이 대화 상자에서는 디버깅을 사용하도록 web.config 파일을 디버깅하거나 수정하지 않고 프로젝트를 실행하는 옵션을 제공합니다. 첫 번째 옵션을 선택하면 프로젝트가 정상적으로 실행됩니다. 두 번째 옵션을 선택하면 web.config 파일이 다음으로 구성됩니다.
호출 스택 켜기(
CallStack="true")Visual Studio에서 사용자 지정 오류 사용 안 함(
<customErrors mode="Off" />)컴파일 디버깅 사용(
<compilation debug="true">)결과 web.config 파일은 다음과 같습니다.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<configuration>
...
<SharePoint>
<SafeMode MaxControls="200"
CallStack="true"
DirectFileDependencies="10"
TotalFileDependencies="50"
AllowPageLevelTrace="false">
...
</SafeMode>
...
</SharePoint>
<system.web>
...
<customErrors mode="Off" />
...
<compilation debug="true">
...
</compilation>
...
</system.web>
...
</configuration>
변경 내용을 되돌리고 디버깅을 사용하지 않도록 설정하려면 web.config 파일에서 다음 XML을 변경합니다.
호출 스택 끄기(
CallStack="false")Visual Studio에서 사용자 지정 오류 사용(
<customErrors mode="On" />)컴파일 디버깅 사용 안 함(
<compilation debug="false">)
F5 디버그 및 배포 프로세스
디버그 모드에서 SharePoint 프로젝트를 실행하면 SharePoint 배포 프로세스에서 다음 작업을 수행합니다.
사용자 지정 가능한 배포 전 명령을 실행합니다.
MSBuild 명령을 사용하여 웹 솔루션 패키지(.wsp) 파일을 만듭니다. .wsp 파일에는 필요한 모든 파일과 기능이 포함됩니다. 자세한 내용은 솔루션 개요를 참조하세요.
SharePoint 솔루션이 팜 솔루션인 경우 지정된 사이트 URL에 대한 IIS 애플리케이션 풀을 재활용합니다. 이 단계에서는 IIS 작업자 프로세스에 의해 잠긴 파일을 해제합니다.
패키지의 이전 버전이 이미 있는 경우 .wsp 파일에서 이전 버전의 기능 및 파일을 철회합니다. 이 단계에서는 기능을 비활성화하고 솔루션 패키지를 제거한 다음 SharePoint 서버에서 솔루션 패키지를 삭제합니다.
.wsp 파일에 기능 및 파일의 현재 버전을 설치합니다. 이 단계에서는 SharePoint 서버에 솔루션을 추가하고 설치합니다.
워크플로의 경우 워크플로 어셈블리를 설치합니다. 어셈블리 위치 속성을 사용하여 위치를 변경할 수 있습니다.
범위가 사이트 또는 웹인 경우 SharePoint에서 프로젝트의 기능을 활성화합니다. 팜 및 WebApplication 범위의 기능은 활성화되지 않습니다.
워크플로의 경우 SharePoint 사용자 지정 마법사에서 선택한 SharePoint 라이브러리, 목록 또는 사이트와 워크플로를 연결합니다.
비고
이 연결은 마법사에서 워크플로 자동 연결을 선택한 경우에만 발생합니다.
사용자 지정 가능한 배포 후 명령을 실행합니다.
Visual Studio 디버거를 Windows SharePoint Services 프로세스(w3wp.exe)에 연결합니다. 프로젝트 형식에서 샌드박스 솔루션 속성을 변경할 수 있고 해당 값이 true로 설정된 경우 디버거는 다른 프로세스(SPUCWorkerProcess.exe)에 연결됩니다. 자세한 내용은 샌드박스 솔루션 고려 사항을 참조하세요.
SharePoint 솔루션이 팜 솔루션인 경우 JavaScript 디버거를 시작합니다.
웹 브라우저에 적절한 라이브러리, 목록 또는 사이트 페이지를 표시합니다.
Visual Studio는 각 작업이 완료된 후 출력 창에 상태 메시지를 표시합니다. 작업을 완료할 수 없는 경우 Visual Studio는 오류 목록 창에 오류 메시지를 표시합니다.
SharePoint 프로젝트 기능
기능은 사이트 정의를 사용하여 사이트 수정을 간소화하는 이식 가능한 모듈식 기능 단위입니다. 또한 특정 범위에 대해 활성화할 수 있고 사용자가 특정 목표 또는 작업을 수행하는 데 도움이 되는 WSS(Windows SharePoint Services) 요소의 패키지이기도 합니다. 템플릿은 기능으로 배포됩니다.
디버그 모드에서 프로젝트를 실행하는 경우 배포 프로세스는 %COMMONPROGRAMFILES%\Microsoft Shared\web server extensions\14\TEMPLATE\FEATURES의 기능 디렉터리에 폴더를 만듭니다. 기능 이름에는 프로젝트 이름_Featurex 형식(예: TestProject_Feature1)이 있습니다.
기능 디렉터리에 있는 솔루션의 폴더에는 기능 정의 파일과 워크플로 정의 파일이 포함되어 있습니다. 기능 정의 파일(Feature.xml)은 프로젝트의 Feature에 있는 파일을 설명합니다. 프로젝트 정의 파일(Elements.xml)은 프로젝트 템플릿을 설명합니다. Elements.xml솔루션 탐색기에서 찾을 수 있지만 솔루션 패키지를 만들 때 Feature.xml 생성됩니다. 이러한 파일에 대한 자세한 내용은 SharePoint 프로젝트 및 프로젝트 항목 템플릿을 참조하세요.
워크플로 디버그
워크플로 프로젝트를 디버그할 때 Visual Studio는 형식에 따라 워크플로 템플릿을 라이브러리 또는 목록에 추가합니다. 그런 다음 수동으로 또는 항목을 추가하거나 업데이트하여 워크플로 템플릿을 시작할 수 있습니다. 그런 다음 Visual Studio를 사용하여 워크플로를 디버그할 수 있습니다.
비고
다른 어셈블리에 대한 참조를 추가하는 경우 해당 어셈블리가 GAC(전역 어셈블리 캐시)에 설치되어 있는지 확인합니다. 그렇지 않으면 워크플로 솔루션이 실패합니다. 어셈블리를 설치하는 방법에 대한 자세한 내용은 문서 또는 항목에서 워크플로 수동 시작을 참조하세요.
그러나 배포 프로세스는 워크플로를 시작하지 않습니다. SharePoint 웹 사이트에서 워크플로를 시작해야 합니다. Microsoft Office Word 2010과 같은 클라이언트 애플리케이션을 사용하거나 별도의 서버 쪽 코드를 사용하여 워크플로를 시작할 수도 있습니다. SharePoint 사용자 지정 마법사에 지정된 방법 중 하나를 사용합니다.
예를 들어 워크플로를 수동으로 시작할 수 있도록 지정한 경우 라이브러리 또는 목록의 항목에서 직접 워크플로를 시작합니다. 워크플로를 수동으로 시작하는 방법에 대한 자세한 내용은 문서 항목에서 워크플로 수동 시작을 참조하세요.
디버그 기능 이벤트 수신기
기본적으로 Visual Studio SharePoint 애플리케이션을 실행하면 해당 기능이 SharePoint 서버에서 자동으로 활성화됩니다. 그러나 이렇게 하면 기능 이벤트 수신기를 디버그할 때 문제가 발생합니다. Visual Studio에서 기능을 활성화하면 디버거와 다른 프로세스에서 실행되기 때문입니다. 즉, 중단점과 같은 일부 디버깅 기능이 제대로 작동하지 않습니다.
SharePoint에서 기능의 자동 활성화를 사용하지 않도록 설정하고 기능 이벤트 수신기의 적절한 디버깅을 허용하려면 디버깅 전에 프로젝트의 활성 배포 구성 속성 값을 활성화 없음 으로 설정합니다. 그런 다음 Visual Studio에서 SharePoint 애플리케이션을 디버그하기 시작한 후 SharePoint에서 기능을 수동으로 활성화합니다. 기능을 활성화하려면 SharePoint에서 사이트 작업 메뉴를 열고, 사이트 설정을 선택하고, 사이트 기능 관리 링크를 선택한 다음, 기능 옆에 있는 활성화 단추를 선택하여 정상적으로 디버깅을 계속합니다.
향상된 디버깅 정보 사용
Visual Studio 프로세스(devenv.exe), Visual Studio SharePoint 호스트 프로세스(vssphost4.exe), SharePoint 및 WCF 계층 간의 복잡한 상호 작용으로 인해 빌드, 배포 등에서 발생하는 오류를 진단하는 것은 어려울 수 있습니다. 이러한 오류를 해결하려면 향상된 디버깅 정보를 사용하도록 설정할 수 있습니다. 이렇게 하려면 Windows 레지스트리에서 다음 레지스트리 키로 이동합니다.
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0\SharePointTools
"EnableDiagnostics" REG_DWORD 값이 아직 없는 경우 수동으로 만듭니다. "EnableDiagnostics" 값을 "1"로 설정합니다.
이 키 값을 1로 설정하면 Visual Studio에서 실행하는 동안 프로젝트 시스템 오류가 발생할 때마다 스택 추적 정보가 출력 창에 표시됩니다. 향상된 디버깅 정보를 사용하지 않도록 설정하려면 EnableDiagnostics를 다시 0으로 설정하거나 값을 삭제합니다.
다른 SharePoint 레지스트리 키에 대한 자세한 내용은 Visual Studio의 SharePoint 도구에 대한 디버그 확장을 참조하세요.