다음을 통해 공유


Visual Web Developer로의 변환 문제 해결

업데이트: 2007년 11월

Microsoft Visual Web Developer를 사용하여 이전 버전의 Microsoft Visual Studio .NET에서 만든 웹 응용 프로그램 프로젝트를 열면 Visual Web Developer에서 자동으로 웹 응용 프로그램을 ASP.NET 버전 2.0에 사용되는 형식으로 변환합니다.

참고:

변환 프로세스에 대한 자세한 내용은 Visual Studio .NET에서 웹 프로젝트 변환을 참조하십시오.

웹 응용 프로그램이 변환 후에 다른 방식으로 동작하는 경우가 있습니다. 이 항목에서는 이러한 상황의 가장 흔한 예를 설명하고 해결 방법을 제시합니다. 마이그레이션 문제 해결에 대한 자세한 내용은 ASP.NET Development Center for Migration에서 마이그레이션 정보에 대해 문의하십시오.

이 항목에서는 다음과 같은 변환 문제에 대해 설명합니다.

  • 변환 후 컨트롤에서 다른 태그를 렌더링함

  • 태그 유효성 검사에서 오류 발생

  • 변환 후 페이지 이벤트가 두 번 발생함

  • 컴파일 중에 보고되는 모호한 클래스

  • 코드 숨김 페이지 모델의 변경 내용과 관련된 오류

  • 구문 분석 오류

  • 제외한 파일이 다시 포함됨

  • 혼합 프로젝트 형식의 경우 부분적으로 변환된 솔루션

  • 웹 기반 사이트를 파일 기반 사이트로 열기

  • 클라이언트측 ID가 코드 숨김 파일에서 삭제됨

  • 순환 참조 오류

변환 후 컨트롤에서 다른 태그를 렌더링함

ASP.NET 2.0에서는 브라우저가 XHTML 기능을 지원하지 않는 것으로 식별되면 Page 클래스와 ASP.NET 웹 서버 컨트롤은 기본적으로 XHTML 1.0 Transitional 표준과 호환되는 태그를 렌더링합니다. 변환 마법사에서는 xhtmlConformance 요소의 mode 특성을 Legacy로 설정합니다. 변환 후에는 요소가 이전 버전의 ASP.NET과 약간 다른 방식으로 렌더링될 수 있습니다. 대부분의 경우 이러한 렌더링의 차이점은 응용 프로그램의 기능에 영향을 주지 않습니다. 그러나 특정 태그나 특성을 사용하는 클라이언트 스크립트가 있으면 응용 프로그램이 이전과 다른 방식으로 작동할 수 있습니다.

자세한 내용은 ASP.NET 및 XHTML을 참조하십시오.

태그 유효성 검사에서 오류 발생

마이그레이션 후에는 기본 태그 유효성 검사 스키마가 Internet Explorer 6.0으로 설정됩니다. 따라서 편집기에서는 페이지의 태그를 Microsoft Internet Explorer 6.0에서 유효한 HTML을 정의하는 스키마와 비교합니다. 이 단계는 Visual Web Developer로 쉽게 전환하도록 하기 위한 것입니다. 응용 프로그램 페이지가 XHTML 1.0 Transitional 유효성 검사 스키마를 통한 유효성 검사를 통과하도록 태그를 수정하는 것이 좋습니다.

유효성 검사 스키마를 변경하는 방법을 보려면 방법: Visual Web Developer에서 HTML 편집에 대한 유효성 검사 스키마 선택을 참조하십시오.

변환 후 페이지 이벤트가 두 번 발생함

변환 과정에서는 @ Page 지시문의 AutoEventWireup 특성이 제거됩니다. 이 특성의 기본값은 true이며 Page_event라는 이벤트가 페이지에서 자동 발생함을 의미합니다. 페이지에서 명시적으로 AutoEventWireup 특성을 false로 설정한 경우에는 변환 후 페이지의 이벤트가 자동으로 발생합니다. Visual Basic의 Handles 키워드 등 다른 명시적 이벤트 발생 방법이 페이지에 포함되어 있으면 이벤트가 두 번 발생할 수 있습니다. 이 문제를 해결하려면 @ Page 지시문에 AutoEventWireup="false"를 추가합니다.

컴파일 중에 보고되는 모호한 클래스

프로젝트를 변환한 후 컴파일러에서 클래스가 모호하다고 보고할 수 있습니다. 이는 둘 이상의 네임스페이스에서 해당 클래스를 가져왔음을 의미합니다. 예를 들어, 변환된 프로젝트에서 Cache 클래스의 인스턴스를 만들면 컴파일러에서 해당 클래스가 System.Net 네임스페이스와 System.Web.Caching 네임스페이스에 모두 있다고 보고합니다.

이러한 경우 .NET Framework 버전 2.0에는 기존 클래스와 같은 이름을 가진 새 클래스가 포함됩니다. 이 문제를 해결하려면 코드에서 클래스 참조를 찾은 다음 클래스 이름 앞에 네임스페이스 이름을 추가하여 정규화된 참조를 만듭니다.

코드 숨김 페이지 모델의 변경 내용과 관련된 오류

코드 숨김 클래스의 클래스 보호 멤버에 액세스하는 .aspx 페이지가 포함된 프로젝트를 변환하면 예외가 발생할 수 있습니다. 이는 .NET Framework 2.0에서 코드 숨김 모델이 변경되었기 때문입니다. 이전 버전의 .NET Framework에서는 페이지가 코드 숨김 클래스의 파생 클래스였습니다. 그러나 ASP.NET 2.0에서는 페이지 생성 중에 .aspx 페이지에서 사용되어 컴파일된 결과 페이지를 만드는 partial 클래스를 코드 숨김 클래스에서 정의합니다.

이 변환 문제가 발생할 수 있는 일반적인 시나리오는 응용 프로그램에서 기본 클래스 코드 숨김 클래스에 공유 레이아웃 구성 요소를 정의하는 경우입니다. 이 경우 사용자 정의 컨트롤 또는 마스터 페이지를 사용하거나 @ Page 지시문의 CodeFileBaseClass 특성을 사용하여 동일한 공유 레이아웃 기능을 얻을 수 있습니다. 사용자 정의 컨트롤을 개발하는 방법은 ASP.NET 사용자 정의 컨트롤 개요를 참조하십시오. 마스터 페이지를 사용하는 방법은 ASP.NET 마스터 페이지 개요를 참조하십시오.

구문 분석 오류

변환 마법사는 구문 분석할 수 없는 .aspx 파일에 대해 구문 분석 오류를 보고합니다. 구문 분석 문제의 원인은 다음과 같은 범주로 분류됩니다.

  • 변환 마법사를 실행하기 전에 .aspx 페이지의 형식이 잘못되었습니다.

  • @ Page 지시문의 CodeBehind 또는 Src 특성을 찾을 수 없습니다.

  • .aspx 페이지에서 참조하는 코드 숨김 파일을 찾을 수 없습니다.

  • .csproj 또는 .vbproj와 같은 프로젝트 파일에 나열된 .aspx 파일이 프로젝트 디렉터리에 없습니다. 이 파일이 프로젝트의 일부가 아닌 경우에는 이 오류를 무시할 수 있습니다.

제외한 파일이 다시 포함됨

이전 버전의 Visual Studio에는 웹 프로젝트에 파일을 포함하거나 제외하는 옵션이 있었습니다. 또한 빌드 작업을 None으로 설정하여 파일을 프로젝트 빌드에서 제외할 수 있었습니다. 마이그레이션 마법사에서는 이 두 경우를 다르게 취급합니다. 마이그레이션 마법사는 웹 프로젝트에서 제외된 것으로 표시되지 않은 파일을 모두 변환합니다. 마이그레이션 마법사는 프로젝트 빌드의 일부가 아닌 파일(빌드 작업이 None으로 설정된 파일)은 변환하지 않습니다.

변환 과정이 완료된 후 이전에 제외했던 파일을 삭제하거나 Visual Studio에서 사용하지 않는 확장명(예: .exclude)을 사용하여 이름을 변경할 수 있습니다. 웹 프로젝트 내의 파일이 변환되지 않은 경우 빌드 작업이 None으로 설정되지 않았는지 확인합니다.

관련 빌드 작업이 None으로 설정된 파일에 대해서는 변환 보고서에 오류 메시지가 생성됩니다. 변환 보고서에 대한 자세한 내용은 마이그레이션 변환 보고서 형식을 참조하십시오.

혼합 프로젝트 형식의 경우 부분적으로 변환된 솔루션

Microsoft Visual Studio 2005 및 이전 버전에서는 웹 프로젝트와 클라이언트 프로젝트(예: 클래스 라이브러리 또는 Windows 응용 프로그램)로 구성된 솔루션을 만들 수 있습니다. Microsoft Visual Studio 2005 Express Edition을 사용하는 경우에는 솔루션에서 Express Edition에 관련된 부분만 변환할 수 있습니다. 예를 들어 Visual Web Developer 2005 Express Edition의 변환 마법사를 사용하는 경우에는 솔루션에 포함된 다른 프로젝트 형식에 관계없이 사용자가 연 솔루션의 웹 프로젝트만 변환할 수 있습니다. 그 결과 변환되는 솔루션은 부분적으로만 변환됩니다. 혼합 프로젝트 형식이 포함된 솔루션 전체를 변환하려면 Visual Web Developer 2005, Visual Studio 2005 또는 Visual Studio 2005 Team System을 사용하십시오.

웹 기반 사이트를 파일 기반 사이트로 열기

이전 버전의 Visual Studio에서 만든 웹 사이트는 Visual Web Developer 2005의 웹 사이트 열기 메뉴 옵션을 사용하여 여는 것이 좋습니다. 그런 다음 사이트를 파일 기반 사이트, 로컬 Microsoft IIS(인터넷 정보 서비스) 사이트, FTP(파일 전송 프로토콜) 배포 사이트 또는 원격 사이트로 열도록 선택할 수 있습니다. 웹 기반 사이트를 파일 기반 사이트로 열면 IIS 메타데이터 정보가 손실됩니다. 특히 가상 디렉터리로 표시된 하위 폴더에 대한 정보가 유지되지 않습니다. 웹 기반 사이트를 파일 기반 사이트로 변환하면 변환 보고서에 경고가 보고됩니다.

이 경우 웹 사이트를 닫은 다음 웹 사이트 열기 명령을 사용하고 로컬 IIS 탭을 선택하여 웹 사이트를 다시 여는 것이 좋습니다. 마이그레이션 마법사를 사용하는 방법에 대한 자세한 내용은 방법: Visual Studio .NET 프로젝트를 Visual Studio 2005로 변환을 참조하십시오. 변환 보고서에 대한 자세한 내용은 마이그레이션 변환 보고서 형식을 참조하십시오.

클라이언트측 ID가 코드 숨김 파일에서 삭제됨

클라이언트측 ID 특성을 사용하는 태그(예: HTML div 요소)가 있고 이 태그의 이름이 코드 숨김 페이지에 선언된 멤버 변수와 같은 경우, 변환 도중 태그에서 ID 태그가 제거됩니다.

이 문제를 해결하려면 변환하기 전에 태그 및 코드를 검토하여 클라이언트측 ID 특성과 멤버 변수의 이름이 충돌하는지 확인하고, 서로 다른 이름을 사용하도록 변경합니다.

순환 참조 오류

변환 과정에서 다른 페이지나 사용자 정의 컨트롤을 참조하는 코드 숨김 페이지에 @ Reference 지시문이 추가됩니다. 이로 인해 순환 참조가 발생하는 경우가 있습니다. compilation 요소의 batch 특성을 False로 설정하면 문제 해결에 도움이 됩니다. batch 특성의 기본값은 True입니다. batch를 False로 설정하면 순환 참조 문제를 해결할 수 있습니다. 장기적인 관점에서는 App_Code 폴더에 저장된 클래스에 정의된 추상 기본 클래스를 사용하도록 페이지나 사용자 정의 컨트롤을 다시 디자인한 다음 batch 특성을 다시 True로 설정하는 것이 좋습니다.

참고 항목

작업

방법: Visual Web Developer에서 HTML 편집에 대한 유효성 검사 스키마 선택

개념

웹 솔루션 및 프로젝트 파일 변환

기타 리소스

ASP.NET Development Center for Migration