Share via


System.Deployment.Application을 사용하는 ClickOnce 애플리케이션 디버그

Visual Studio에서 ClickOnce 배포를 사용하면 애플리케이션을 업데이트하는 방법을 구성할 수 있습니다. 그러나 고급 ClickOnce 배포 기능을 사용하고 사용자 지정해야 하는 경우 System.Deployment.Application에서 제공하는 배포 개체 모델에 액세스해야 합니다. 다음과 같은 고급 작업에 System.Deployment.Application API를 사용할 수 있습니다.

  • 애플리케이션에서 “지금 업데이트” 옵션 만들기

  • 다양한 애플리케이션 구성 요소의 조건부, 주문형 다운로드

  • 애플리케이션에 직접 통합된 업데이트

  • 클라이언트 애플리케이션이 항상 최신 상태를 유지하도록 보장

    System.Deployment.Application API는 ClickOnce 기술을 사용하여 애플리케이션을 배포한 경우에만 작동하므로 이를 디버그하는 유일한 방법은 ClickOnce를 사용하여 애플리케이션을 배포하고, 연결한 다음, 디버그하는 것입니다. 디버거를 연결하기 전에 애플리케이션을 시작하고 실행할 때 이 코드가 자주 실행되기 때문에 디버거를 빠르게 연결하기가 어려울 수 있습니다. 해결 방법은 업데이트 검사 코드 또는 주문형 코드를 업데이트하기 전에 중단(또는 Visual Basic의 경우 프로젝트 중지)을 수행하는 것입니다.

    권장 디버깅 기술은 다음과 같습니다.

참고

System.Deployment.Application 네임스페이스의 ApplicationDeployment 클래스 및 API는 .NET Core 및 .NET 5 이상 버전에서 지원되지 않습니다. .NET 7에서 애플리케이션 배포 속성에 액세스하는 새로운 방법을 지원합니다. 자세한 내용은 .NET에서 ClickOnce 배포 속성 액세스를 참조하세요. .NET 7은 ApplicationDeployment 메서드와 동등한 메서드를 지원하지 않습니다.

  1. 시작하기 전에 기호(.pdb) 파일 및 소스 파일이 보관되어 있는지 확인합니다.

  2. 애플리케이션의 버전 1을 배포합니다.

  3. 비어 있는 새 솔루션을 만듭니다. 파일 메뉴에서 새로 만들기, 프로젝트를 차례로 클릭합니다. 새 프로젝트 대화 상자에서 기타 프로젝트 형식 노드를 연 다음 Visual Studio 솔루션 폴더를 선택합니다. 템플릿 창에서 빈 솔루션을 선택합니다.

  4. 이 새 솔루션의 속성에 보관된 소스 위치를 추가합니다. 솔루션 탐색기에서 솔루션 노드를 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다. 속성 페이지 대화 상자에서 소스 파일 디버그를 선택하고 보관된 소스 코드의 디렉터리를 추가합니다. 그러지 않으면 소스 파일 경로가 .pdb 파일에 기록되므로 디버거가 만료된 소스 파일을 찾습니다. 디버거가 만료된 소스 파일을 사용하는 경우 소스가 일치하지 않는다는 메시지가 표시됩니다.

  5. 디버거가 .pdb 파일을 찾을 수 있는지 확인합니다. 애플리케이션을 사용하여 배포한 경우 디버거에서 해당 파일을 자동으로 찾습니다. 이는 항상 먼저 해당 어셈블리 옆에 표시됩니다. 그러지 않으면 기호 파일(.pdb) 위치에 보관 경로를 추가해야 합니다. 이 옵션에 액세스하려면 도구 메뉴에서 옵션을 클릭한 다음 디버깅 노드를 열고 기호를 클릭합니다.

  6. CheckForUpdateDownload/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
    
  7. 버전 2를 배포합니다.

  8. 버전 2에 대한 업데이트를 다운로드하는 동안 버전 1 애플리케이션에 디버거를 연결하려고 합니다. 또는 System.Diagnostics.Debugger.Break 메서드를 사용하거나 단순히 Visual Basic에서 Stop을 사용할 수 있습니다. 물론 이러한 메서드 호출을 프로덕션 코드에 남겨두면 안 됩니다.

    예를 들어 Windows Forms 애플리케이션을 개발하고 있고 이 메서드에 대한 이벤트 처리기가 업데이트 논리를 사용하는 경우를 가정해 보겠습니다. 이를 디버그하려면 단추를 누르기 전에 연결하고 중단점을 설정합니다. 적절한 보관 파일을 열고 중단점을 설정해야 합니다.

    애플리케이션이 배포된 경우에만 System.Deployment.Application API를 호출하려면 IsNetworkDeployed 속성을 사용하고, Visual Studio에서 디버깅하는 중에는 API를 호출하면 안 됩니다.