Visual Studio에서 ClickOnce 배포를 사용하면 애플리케이션을 업데이트하는 방법을 구성할 수 있습니다. 그러나 고급 ClickOnce 배포 기능을 사용하고 사용자 지정하려는 경우 제공된 System.Deployment.Application배포 개체 모델에 액세스해야 합니다. 다음과 같은 고급 작업에 API를 사용할 System.Deployment.Application 수 있습니다.
애플리케이션에서 "지금 업데이트" 옵션 만들기
다양한 애플리케이션 구성 요소의 조건부 주문형 다운로드
애플리케이션에 직접 통합된 업데이트
클라이언트 애플리케이션이 항상 최신 상태를 유지하도록 보장
System.Deployment.Application API는 애플리케이션이 ClickOnce 기술로 배포된 경우에만 작동하므로 이를 디버그하는 유일한 방법은 ClickOnce를 사용하여 애플리케이션을 배포하고, 연결한 다음, 디버그하는 것입니다. 디버거를 연결하기 전에 애플리케이션이 시작되고 실행될 때 이 코드가 실행되는 경우가 많기 때문에 디버거를 충분히 일찍 연결하기 어려울 수 있습니다. 해결 방법은 업데이트 확인 코드 또는 주문형 코드 앞에 중단(또는 Visual Basic 프로젝트의 경우 중지)을 배치하는 것입니다.
권장되는 디버깅 기술은 다음과 같습니다.
비고
네임스페이 ApplicationDeployment 스의 클래스 및 API System.Deployment.Application 는 .NET Core 및 .NET 5 이상 버전에서 지원되지 않습니다. .NET 7에서는 애플리케이션 배포 속성에 액세스하는 새로운 방법이 지원됩니다. 자세한 내용은 .NET의 Access ClickOnce 배포 속성을 참조하세요. .NET 7은 ApplicationDeployment 메서드에 해당하는 메서드를 지원하지 않습니다.
시작하기 전에 기호(.pdb) 파일 및 원본 파일이 보관되어 있는지 확인합니다.
애플리케이션 버전 1을 배포합니다.
빈 솔루션을 새로 만듭니다. [파일] 메뉴에서 [새로 만들기], [프로젝트]를 선택합니다. 새 프로젝트 대화 상자에서 다른 프로젝트 형식 노드를 연 다음 Visual Studio 솔루션 폴더를 선택합니다. 템플릿 창에서 빈 솔루션을 선택합니다.
이 새 솔루션의 속성에 보관된 원본 위치를 추가합니다. 솔루션 탐색기에서 솔루션 노드를 마우스 오른쪽 단추로 클릭한 다음 속성을 선택합니다. 속성 페이지 대화 상자에서 소스 파일 디버그를 선택한 다음, 보관된 소스 코드의 디렉터리를 추가합니다. 그렇지 않으면 원본 파일 경로가 .pdb 파일에 기록되므로 디버거는 오래된 원본 파일을 찾습니다. 디버거에서 오래된 원본 파일을 사용하는 경우 원본이 일치하지 않는다는 메시지가 표시됩니다.
디버거가 .pdb 파일을 찾을 수 있는지 확인합니다. 애플리케이션을 사용하여 파일을 배포한 경우 디버거는 파일을 자동으로 찾습니다. 항상 먼저 문제의 어셈블리 옆을 봅니다. 그렇지 않으면 기호 파일 위치 목록에 보관 경로를 추가해야 합니다.
도구(또는 디버그) >옵션 창을 열고 모든 설정>디버깅기호> 섹션을 확장>. 기호 파일(.pdb) 위치 목록에서 항목을 추가, 변경 또는 제거합니다.
도구(또는 디버그) >옵션 대화 상자를 열고 디버깅기호 섹션을 > 확장합니다. 기호 파일(.pdb) 검색 위치 목록에서 항목을 추가, 변경 또는 제거합니다.
CheckForUpdate와Download/Update메서드 호출 사이에서 발생하는 일을 디버그합니다.예를 들어 업데이트 코드는 다음과 같습니다.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If My.Application.Deployment.IsNetworkDeployed Then If (My.Application.Deployment.CheckForUpdate()) Then My.Application.Deployment.Update() Application.Restart() End If End If End Sub버전 2를 배포합니다.
버전 2에 대한 업데이트를 다운로드하는 동안 버전 1 애플리케이션에 디버거를 연결하려고 시도합니다. 또는 메서드를
System.Diagnostics.Debugger.Break사용하거나 Visual Basic에서 간단히Stop사용할 수 있습니다. 물론 이러한 메서드 호출은 프로덕션 코드에 그대로 두면 안 됩니다.예를 들어 Windows Forms 애플리케이션을 개발 중이며 업데이트 논리가 포함된 이 메서드에 대한 이벤트 처리기가 있다고 가정합니다. 이를 디버깅하려면 단추를 누르기 전에 연결한 다음 중단점을 설정합니다(적절한 보관 파일을 열고 중단점을 설정해야 합니다).
IsNetworkDeployed 이 속성을 사용하여 애플리케이션이 System.Deployment.Application 배포될 때만 API를 호출합니다. Visual Studio에서 디버깅하는 동안에는 API를 호출하면 안 됩니다.