연습: Visual Studio에서 웹 사이트 프로젝트를 웹 응용 프로그램 프로젝트로 변환
업데이트: 2007년 11월
이 연습에서는 기존 Microsoft Visual Studio 2005 웹 사이트 프로젝트를 Microsoft Visual Studio 2005 웹 응용 프로그램 프로젝트로 변환하는 방법을 설명합니다. 이 웹 응용 프로그램 프로젝트 모델에 사용되는 개념적 접근 방식은 Visual Studio .NET 2003의 웹 프로젝트와 동일합니다. 여기에는 단일 어셈블리로의 컴파일과 파일 포함 및 제외를 위한 프로젝트 파일이 포함됩니다. 자세한 내용은 Visual Studio .NET에서 웹 프로젝트 변환을 참조하십시오.
이 연습에서 수행할 작업은 다음과 같습니다.
Visual Studio 2005 웹 사이트 프로젝트 열기 및 확인
새 Visual Studio 2008 웹 응용 프로그램 프로젝트 만들기
프로젝트 참조 설정
새 웹 응용 프로그램 프로젝트로 파일 복사
프로젝트 파일 변환
웹 응용 프로그램 프로젝트 실행
네임스페이스 구문 추가
선언 형식의 데이터 집합 변환
프로필 개체 코드 변환
필수 구성 요소
이 연습을 완료하려면 다음과 같은 요건을 갖추어야 합니다.
Visual Studio 2008 또는 Microsoft Visual Studio 2005 SP1(서비스 팩 1)
.NET Framework 버전 2.0.
Visual Studio 2005 웹 사이트 프로젝트 열기 및 확인
프로젝트를 변환하려면 먼저 해당 프로젝트가 제대로 작동하는지 확인해야 합니다. 이렇게 해야 변환 과정에서 오류가 발생하지 않습니다.
Visual Studio 2005 웹 프로젝트를 열고 확인하려면
기존 Visual Studio 2005 솔루션을 엽니다.
파일 메뉴에서 열기를 클릭한 다음 웹 사이트를 클릭합니다.
웹 사이트 열기 대화 상자가 표시됩니다.
열려는 프로젝트 폴더를 선택한 다음 열기를 클릭합니다.
빌드 메뉴에서 웹 사이트 빌드를 클릭합니다.
디버그 메뉴에서 디버깅 시작을 클릭합니다. F5 키를 누를 수도 있습니다.
참고: 디버깅 사용 안 함 대화 상자가 표시되면 디버깅하도록 설정한 새 Web.config 파일 추가를 선택하십시오.
프로젝트가 예상대로 실행되는지 확인합니다.
새 Visual Studio 2008 웹 응용 프로그램 프로젝트 만들기
기존 Visual Studio 2005 웹 사이트 프로젝트를 변환하는 가장 좋은 방법은 우선 별도의 디렉터리에 빈 Visual Studio 2008 웹 응용 프로그램 프로젝트를 새로 만드는 것입니다. 이렇게 하면 기존의 웹 사이트 파일을 변경하지 않은 채 그대로 유지할 수 있고 기존의 기능을 새 웹 응용 프로그램 프로젝트로 복사할 수도 있습니다.
새 프로젝트를 기존 솔루션에 추가할 수 있습니다. 이 방법은 사용하려는 클래스 라이브러리 프로젝트가 여러 개인 경우에 적합합니다. 또는 Visual Studio의 새 인스턴스를 시작하고 새 솔루션과 프로젝트를 만들 수 있습니다.
새 솔루션에 새 Visual Studio 2008 웹 응용 프로그램 프로젝트를 만들려면
Visual Studio 2008에서 열려 있는 솔루션을 모두 닫습니다.
파일 메뉴에서 새로 만들기를 클릭한 다음 프로젝트를 클릭합니다.
새 프로젝트 대화 상자가 표시됩니다.
새 프로젝트 대화 상자의 프로젝트 형식 섹션에서 사용하려는 언어를 확장한 다음 웹을 선택하여 웹 관련 템플릿을 표시합니다.
ASP.NET 웹 응용 프로그램을 선택합니다.
이름, 위치 및 솔루션 이름의 값을 입력한 다음 확인을 클릭하여 웹 응용 프로그램 프로젝트를 만듭니다.
프로젝트가 만들어졌으면 자동으로 생성된 Default.aspx 및 Web.config 파일을 삭제합니다.
프로젝트 참조 설정
Visual Studio 2008 웹 사이트 프로젝트에 추가 프로젝트 또는 어셈블리 참조가 필요한 경우 웹 응용 프로그램 프로젝트에 이를 추가할 수 있습니다. 솔루션 탐색기의 참조 노드 아래에서 새 Visual Studio 2008 웹 응용 프로그램 프로젝트의 기본 참조 목록을 볼 수 있습니다.
참고: |
---|
오류가 발생하지 않게 하려면 프로젝트 파일을 변환하기 전에 Bin 폴더에 있던 어셈블리에 대한 웹 응용 프로그램 프로젝트를 가리키는 참조를 추가하십시오. 참조를 추가하는 방법에 대한 자세한 내용은 다음 절차를 참조하십시오. |
참조에 대한 자세한 내용은 프로젝트 참조를 참조하십시오.
Visual Studio 2008 웹 응용 프로그램 프로젝트에 대한 참조를 추가하려면
솔루션 탐색기에서 참조를 마우스 오른쪽 단추로 클릭한 다음 참조 추가를 클릭합니다.
참조 추가 대화 상자가 표시됩니다.
추가하려는 참조를 선택한 다음 확인을 클릭합니다.
솔루션 탐색기에서 웹 응용 프로그램을 마우스 오른쪽 단추로 클릭한 다음 빌드를 클릭합니다.
Visual Studio에서 프로젝트가 빌드되고 프로젝트 사이의 참조가 모두 제대로 작동하는지 확인하는 과정이 진행됩니다.
웹 응용 프로그램 프로젝트로 파일 복사
기존 파일을 추가하는 가장 쉬운 방법은 Visual Studio 2008 웹 사이트 프로젝트 디렉터리의 파일을 웹 응용 프로그램 프로젝트 디렉터리로 복사하는 것입니다.
참고: |
---|
복사하는 동안 데이터 소스 구성 마법사가 시작되면 마법사 대화 상자에서 취소를 클릭하여 나머지 파일을 복사하십시오. |
웹 사이트 프로젝트를 웹 응용 프로그램 프로젝트로 복사하려면
솔루션 탐색기에서 웹 사이트 프로젝트를 마우스 오른쪽 단추로 클릭하고 Windows 탐색기에서 폴더 열기를 선택합니다.
복사할 웹 사이트 프로젝트의 파일을 선택합니다.
선택한 파일을 마우스 오른쪽 단추로 클릭하고 복사를 선택합니다.
웹 응용 프로그램 프로젝트에서 웹 응용 프로그램 프로젝트를 마우스 오른쪽 단추로 클릭하고 Windows 탐색기에서 폴더 열기를 선택합니다.
웹 사이트 프로젝트 파일을 웹 응용 프로그램 디렉터리로 붙여넣습니다.
웹 응용 프로그램 프로젝트의 솔루션 탐색기에서 모든 파일 표시 단추를 클릭합니다.
솔루션 탐색기에서 새 파일을 선택합니다.
선택한 파일을 마우스 오른쪽 단추로 클릭한 다음 프로젝트에 포함을 클릭합니다.
Visual Studio 2008 웹 사이트 프로젝트와 Visual Studio 2008 웹 응용 프로그램 프로젝트 사이의 한 가지 차이점은 웹 사이트 프로젝트 모델의 경우 도구에서 생성한 partial 클래스를 동적으로 생성한다는 점입니다.
웹 사이트 프로젝트의 파일을 웹 응용 프로그램 프로젝트로 복사한 후에도 각 페이지 및 사용자 정의 컨트롤의 코드 숨김 파일은 여전히 .aspx, .master 및 .ascx 파일과 연결되어 있으며 .designer.cs 또는 .designer.vb 파일은 생성되지 않습니다. 다음 단계에서는 이러한 페이지를 변환하여 해당 partial 클래스를 designer.cs 또는 .designer.vb 파일에 저장합니다.
프로젝트 파일 변환
Visual Studio에는 partial 클래스를 사용하도록 웹 응용 프로그램 프로젝트의 페이지와 클래스를 변환하는 옵션이 있습니다. partial 클래스는 페이지나 사용자 정의 컨트롤 코드 숨김 코드의 태그를 구분하는 데 사용됩니다. 디자이너에서 생성한 이러한 클래스는 코드 숨김 파일과는 다른 별도 파일에 저장됩니다.
변환 과정에서 Visual Studio 2008은 프로젝트의 모든 페이지, 마스터 페이지 및 사용자 정의 컨트롤을 재귀적으로 조사하고 각각에 대한 .designer.cs 파일을 자동으로 생성합니다. 또한 Visual Studio에서는 codeFile 특성 대신 codeBehind 특성을 사용하도록.aspx 또는 .ascx 파일을 변경합니다. 이 명령을 실행하면 App_Code 폴더의 이름이 Old_App_Code로 바뀝니다.
웹 응용 프로그램 프로젝트에서 partial 클래스를 사용하도록 페이지와 클래스를 변환하려면
솔루션 탐색기에서 변환하려는 페이지와 클래스가 들어 있는 루트 프로젝트 폴더를 마우스 오른쪽 단추로 클릭한 다음 웹 응용 프로그램으로 변환을 클릭합니다.
프로젝트를 빌드하여 컴파일 오류가 있는지 확인합니다.
오류가 발견되는 경우 가장 가능성이 높은 두 가지 원인은 다음과 같습니다.
프로젝트에 추가해야 하는 어셈블리 참조가 누락되었습니다.
Profile 개체나 형식화된 데이터 집합과 같이 동적으로 생성된 형식에 문제가 있습니다.
어셈블리 참조가 없는 경우 참조 관리자를 열고 해당 참조를 추가합니다. 동적으로 생성된 형식을 사용하는 경우 이 항목의 뒷부분에 나오는 선언 형식의 데이터 집합 변환 및 프로필 개체 코드 변환을 참조하십시오.
ASP.NET 2.0에서는 App_Code 폴더의 모든 클래스를 동적으로 컴파일하므로 Visual Studio 2008 웹 응용 프로그램의 일부로 컴파일할 클래스를 이 폴더에 저장하지 말아야 합니다. 해당 클래스를 이 폴더에 저장하면 클래스가 두 차례 컴파일됩니다. 첫 번째로는 Visual Studio 2008 웹 응용 프로그램 프로젝트 어셈블리의 일부로 컴파일되고, 두 번째로는 ASP.NET에 의해 런타임에 컴파일됩니다. 이 경우 "형식을 로드할 수 없습니다." 예외가 발생할 수 있습니다. 이 예외는 응용 프로그램에 중복된 형식 이름이 있을 때 발생합니다.
그러므로 App_Code 폴더가 아닌 다른 프로젝트 폴더에 클래스 파일을 저장해야 합니다. 폴더 이름을 Old_App_Code로 바꾸는 웹 응용 프로그램으로 변환 명령을 사용하면 이 작업을 자동으로 처리할 수 있습니다.
웹 응용 프로그램 프로젝트 실행
이제 응용 프로그램을 컴파일하여 실행할 수 있습니다. 기본적으로 Visual Studio 2008에서는 기본 제공 ASP.NET Development Server를 사용하여 사이트를 실행합니다. IIS(인터넷 정보 서비스)를 사용하도록 프로젝트를 구성할 수도 있습니다. 웹 응용 프로그램 프로젝트 설정을 관리하려면 프로젝트를 마우스 오른쪽 단추로 클릭하고 속성을 클릭합니다. 그런 다음 웹 탭을 선택하여 이러한 런타임 설정을 구성할 수 있습니다.
자세한 내용은 프로젝트 디자이너, 웹 페이지를 참조하십시오.
추가 변환 옵션
프로젝트를 웹 응용 프로그램 프로젝트로 변환할 때는 몇 가지 옵션을 추가로 고려할 수 있습니다. 이러한 옵션은 다음과 같습니다.
네임스페이스 구문 추가
선언 형식의 데이터 집합 변환
프로필 개체 코드 변환
네임스페이스 구문 추가
기본적으로 Visual Studio 2008 웹 사이트 프로젝트 모델을 사용하여 빌드한 페이지와 클래스에는 코드 네임스페이스가 자동으로 포함되지 않습니다. 그러나 Visual Studio 2008 웹 응용 프로그램 프로젝트 모델을 사용하여 빌드한 페이지, 컨트롤 및 클래스에는 코드 네임스페이스가 자동으로 포함됩니다. 웹 사이트 프로젝트를 웹 응용 프로그램 프로젝트로 변환하는 경우 코드에 네임스페이스를 추가해야 합니다.
예를 들어 C#을 사용하여 작업하는 경우 C# 코드 편집기에서 코드 감싸기 바로 가기 메뉴 명령을 사용하면 Visual Studio 내에서 기존 클래스의 코드에 쉽게 네임스페이스를 추가할 수 있습니다.
기존 클래스에 네임스페이스를 추가하려면
수정하려는 코드 파일을 엽니다.
소스 편집기에서 하나의 클래스나 여러 클래스를 선택하고 선택한 코드를 마우스 오른쪽 단추로 클릭한 다음 코드 감싸기를 클릭합니다.
목록에서 네임스페이스 항목을 선택합니다.
확장명이 .aspx, .ascx, .master, .ashx, .asmx 및 .asax인 파일에는 이러한 파일이 코드 숨김 페이지인 경우 호출되는 클래스 이름을 나열하는 Inherits 또는 Class 특성이 있는 @ Page 등의 지시문이 들어 있습니다. 이러한 파일 형식의 코드 숨김 파일에 네임스페이스를 추가하는 경우 Inherits 및 Class 선언에도 해당 네임스페이스를 추가해야 합니다. 예를 들어 WebApplication5 네임스페이스를 Details.aspx라는 페이지의 코드 숨김 파일에 추가하는 경우 @ Page 지시문의 Inherits 특성을 inherits=Details_aspx에서 inherits=WebApplication5.Details_aspx로 변경해야 합니다.
참고: |
---|
한 파일에서 네임스페이스를 여러 번 업데이트하려면 Visual Studio 편집기의 찾기 및 바꾸기 기능을 사용합니다. |
코드 감싸기 명령을 사용하는 방법에 대한 자세한 내용은 방법: 코드 감싸기 코드 조각 사용을 참조하십시오.
선언 형식의 데이터 집합 변환
Visual Studio 2008 웹 사이트 프로젝트의 App_Code 폴더에 강력한 형식의 데이터 집합 클래스가 있는 경우 Web.config 파일의 connectionString 요소를 수정하기 위해 추가 변경 작업을 수행해야 합니다. 또한 데이터 집합 클래스의 각 TableAdapter 개체에 대해 connectionString 요소를 다시 설정해야 합니다.
강력한 형식의 데이터 집합에 대한 connectionString을 수정하려면
솔루션 탐색기에서 App_Code 폴더의 데이터 집합 클래스를 마우스 오른쪽 단추로 클릭한 다음 디자이너 보기를 클릭합니다.
데이터 집합에 대한 디자이너 창이 표시됩니다.
참고: 데이터 집합 연결이 구성되어 있으면 데이터 집합을 두 번 클릭하여 디자이너에서 해당 데이터 집합을 표시할 수 있습니다.
TableAdapter 개체를 마우스 오른쪽 단추로 클릭하고 속성을 클릭합니다.
Connection 속성을 선택하고 사용 가능한 옵션을 선택하여 연결을 다시 설정합니다.
연결을 업데이트하면 연결 문자열 참조도 업데이트됩니다.
각 데이터 집합의 TableAdapter 개체 각각에 대해 이 단계를 반복합니다.
프로필 개체 코드 변환
ASP.NET 2.0에서는 프로필 속성을 추가로 지원합니다. 이 기능을 사용하면 사용자 프로필 데이터를 개인 설정 데이터베이스에 저장하고 검색할 수 있습니다. Visual Studio 2008 웹 사이트 프로젝트의 경우 ASP.NET에서 프로젝트의 각 ASP.NET 웹 페이지에 Profile 개체(ProfileCommon 클래스의 인스턴스)를 자동으로 추가합니다. 이 개체는 응용 프로그램 Web.config 파일의 프로필 섹션에 정의된 모든 속성에 대한 강력한 형식의 액세스를 제공합니다. 이 개체에 대한 IntelliSense 데이터를 가져와서 자동으로 값을 검색하고 저장할 수 있습니다.
예를 들어, 응용 프로그램의 Web.config 파일에는 다음 섹션이 포함될 수 있습니다.
<profile defaultProvider="AspNetSqlProfileProvider">
<properties>
<add name="Teachers"
type="Teachers"
allowAnonymous="true" />
</properties>
</profile>
이 경우 다음 예제와 같이 페이지에 아래 코드를 추가하여 Teachers 개체에 대한 정보를 저장 및 검색할 수 있습니다.
public partial class _Default : System.Web.UI.Page
{
protected void Button1_Click(object sender, EventArgs e)
{
Teachers teachers = new Teachers();
teachers.Add(new Teacher("Scott"));
teachers.Add(new Teacher("Bob"));
teachers.Add(new Teacher("Paul"));
Profile.Teachers = teachers;
}
protected void Button2_Click(object sender, EventArgs e)
{
GridView1.DataSource = Profile.Teachers;
GridView1.DataBind();
}
}
Visual Studio 2008 웹 응용 프로그램 프로젝트에 ProfileCommon 클래스가 자동으로 포함되지는 않습니다. 그러나 프로필 시스템에 구성된 항목에 대한 강력한 형식의 속성이 들어 있는 ProfileCommon 클래스를 직접 만들 수 있습니다. 그런 다음 HttpContext 개체의 현재 Profile 속성에 액세스하여 속성을 가져오고 설정할 수 있습니다. 다음 예제에서는 사용자 지정 ProfileCommon 클래스를 만드는 방법을 보여 줍니다.
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Web.Profile;
namespace WebApplication6
{
public class ProfileCommon
{
public Teachers Teachers
{
get
{
return (Teachers) HttpContext.Current.Profile.GetPropertyValue("Teachers");
}
set
{
HttpContext.Current.Profile.SetPropertyValue("Teachers",value);
}
}
}
}
그런 다음 아래 코드 예제와 같이 프로필 시스템을 사용해야 하는 페이지에 Profile이라는 ProfileCommon 클래스 인스턴스를 추가할 수 있습니다.
namespace WebApplication20
{
public partial class _Default : System.Web.UI.Page
{
ProfileCommon Profile = new ProfileCommon();
protected void Button1_Click(object sender, EventArgs e)
{
Teachers teachers = new Teachers();
teachers.Add(new Teacher("scott"));
teachers.Add(new Teacher("bob"));
teachers.Add(new Teacher("paul"));
Profile.Teachers = teachers;
}
protected void Button2_Click(object sender, EventArgs e)
{
GridView1.DataSource = Profile.Teachers;
GridView1.DataBind();
}
}
}
페이지의 다른 코드는 변경할 필요가 없으며 원래 웹 사이트 프로젝트와 같은 방법으로 프로필 시스템을 사용할 수 있습니다. 자세한 내용은 ASP.NET 프로필 속성 개요를 참조하십시오.
참고 항목
작업
개념
Visual Studio .NET에서 웹 프로젝트 변환