ASP 변환 방법.NET 웹 사이트에서 ASP로.NET 웹 애플리케이션
ASP를 가지고 있습니다.NET 3.5 웹사이트(시각 스튜디오 용어), 그러나 사이트는 계속 성장하고 있으며 무엇보다도 다소 카우보이적으로 보입니다.웹 응용프로그램(이름 공간 및 모든 이름 공간)으로 변환됩니다.
이것이 Visual Studio에서 쉽게 수행할 수 있는 작업입니까?그렇지 않은 경우 모든 네임스페이스 등을 자동으로 생성할 수 있는 다른 도구가 있습니까?
웹 사이트에는 "웹 응용 프로그램으로 변환" 옵션이 없는 것으로 나타났습니다."웹 응용 프로그램으로 변환" 옵션은 "웹 응용 프로그램"에만 존재합니다!!!!
[내꺼야]
전환을 위해 다음과 같은 작업을 수행해야 합니다.
VS 2008 솔루션(파일->추가->새 프로젝트->C#->웹->ASP)에 새 "웹 애플리케이션"을 추가합니다.NET 웹 애플리케이션).
그런 다음 이전 "웹 사이트"의 모든 파일을 새로 만든 "웹 응용 프로그램"에 복사하고 기본적으로 해당 응용 프로그램에서 만든 모든 파일을 덮어씁니다.
다음 단계는 가장 보기 흉한 단계이며, "웹 사이트"의 참조를 새로운 "웹 응용 프로그램"에 "수동으로" 추가해야 합니다.VS 2008 Power Commands 장난감이 다른 프로젝트 유형의 참조를 복사하기 때문에 이러한 기능을 제공할 것이라고 생각했지만 그렇지 않았습니다.이 작업은 직접 수동으로 수행해야 하며, 동일한 어셈블리의 여러 버전(예: AJAXToolkit) 또는 GAC 및 로컬 버전이 모두 포함된 어셈블리가 있는 경우에는 이 단계에서 주의해야 합니다.
마지막 단계를 반복하고 "웹 응용프로그램"을 빌드하려고 합니다.'...'가 알 수 없는 네임스페이스라는 오류가 계속 발생할 것입니다.어셈블리 참조가 누락되었습니까?사용하는 서버 컨트롤의 ID가 '....'로 대체된 ID를 제외한 다른 ID가 없는지 확인합니다.즉, 누락으로 인해 존재하는 오류만 있을 때까지 참조를 계속 추가하고 프로젝트를 작성합니다.디자이너.CS 또는 .DESIGNER.VB 파일.
그런 다음 VS 2008 솔루션 탐색기의 "웹 응용 프로그램" 루트 프로젝트 노드로 이동하고 마우스 오른쪽 버튼을 클릭하면 "웹 응용 프로그램으로 변환" 옵션이 표시됩니다.이 선택사항은 실제로 페이지와 컨트롤의 "@Page" 및 "@Control" 지시사항을 약간 변경하고 필요한 내용을 작성합니다.디자이너.CS 또는 .DESIGNER.VB 파일.
"웹 응용프로그램"을 다시 작성해 보십시오.오류가 발생할 경우, 누락될 수 있는 참조를 확인하거나 "웹 응용프로그램으로 변환"을 다시 클릭합니다.경우에 따라 누락된 디자이너 파일 이외의 오류가 발생할 경우 일부 페이지/컨트롤에 해당 디자이너 파일이 생성되지 않을 수 있습니다.디자이너가 아닌 문제를 수정하고 "웹 응용프로그램으로 변환"을 다시 클릭하면 이 작업이 수행됩니다.
VS 구축을 성공적으로 완료한 후에는 시작할 준비가 되어 있어야 합니다.웹 응용 프로그램 테스트를 시작합니다.또는 VS 2008 솔루션 탐색기에서 "웹 응용 프로그램" 루트 프로젝트 노드를 마우스 오른쪽 버튼으로 클릭하고 "속성"을 클릭한 다음 "웹" 탭으로 이동하여 "웹 응용 프로그램"을 IIS의 가상 폴더로 설정할 수 있습니다(VS에서 새 가상 디렉터리를 생성할 수 있음).이전 "웹 사이트"에서 사용한 IIS 가상 디렉터리를 사용하려면 먼저 IIS에서 해당 디렉터리를 제거해야 합니다.
업데이트: 페이지를 테스트할 때 "App_Code" 폴더의 클래스, 특히 네임스페이스가 없는 클래스에 가장 주의를 기울입니다.그것들은 큰 함정이 될 수 있습니다.네임스페이스가 없는 동일한 정적 클래스에서 DateTime?(Null 가능)을 확장하고 DateTime 자체를 확장하는 다른 오버로드를 호출하는 두 개의 확장 메서드 오버로드에 문제가 있었습니다.다른 오버로드를 확장 메서드로 호출하면 VS 2008 컴파일이 통과되어 런타임에서만 컴파일 오류가 발생했습니다(IIS 포함).내선 방식으로 호출하는 것에서 일반 정적 방식으로 호출하는 것(동일한 클래스의 호출만 변경하고 다른 클래스의 호출은 내선 방식 호출로 유지)으로 호출하는 것으로 다른 오버로드로 호출을 변경하면 이 문제가 해결되었지만, 분명히 VS 2005에서 이전처럼 안전하지 않습니다.특히 네임스페이스가 없는 클래스에서는 더욱 그렇습니다.
업데이트 2:변환하는 동안 VS 2008은 "App_Code"의 이름을 "Old_App_Code"로 변경합니다.이 새 이름은 보기 흉하게 들리지만 이름을 다시 바꾸지 마십시오."웹 응용프로그램" 모델에서는 모든 코드가 하나의 어셈블리에 포함됩니다.런타임에서 웹 서버는 사용 중인 웹 프로젝트 유형을 알지 못합니다.그러면 "App_Code" 폴더의 모든 코드가 사용되고 새 어셈블리가 만들어집니다.이렇게 하면 "App_Code"라는 이름의 코드가 폴더에 있는 경우 VS에서 만든 어셈블리와 IIS/ASP에서 만든 어셈블리 두 개에 동일한 유형이 존재하는 런타임 컴파일 오류가 발생합니다.NET 개발 서버.그것을 피하기 위해서."Old_App_Code"를 동일한 이름으로 유지하거나 "App_Code"를 제외한 다른 이름으로 변경합니다.이러한 "App_Code" 폴더에 코드를 넣지 마십시오. "웹 응용 프로그램"에는 해당 이름을 가진 폴더가 아예 없습니다.
예전부터 알고 있었지만 "웹사이트" 모델을 오랫동안 사용하지 않아 이제는 잊어버렸습니다 :().
워크스루: MSDN의 Visual Studio에서 웹 사이트 프로젝트를 웹 애플리케이션 프로젝트로 변환
당신의 웹사이트 애플리케이션이 성장한다면..여러 프로젝트로 나누는 것이 좋습니다.웹 사이트 프로젝트에서 웹 응용 프로그램 프로젝트로 전환하는 것은 큰 도움이 되지 않습니다.
새 웹 응용 프로그램 프로젝트를 빌드하는 데 문제가 있으면 Visual Studio의 모든 '도우미' 클래스의 파일 속성을 확인하십시오.프로젝트의 경우 빌드 작업을 내용으로 설정했지만 컴파일이어야 했습니다.
이제 한 웹 사이트 프로젝트를 웹 응용 프로그램으로 성공적으로 마이그레이션했으며 주의해야 할 몇 가지 문제가 있습니다.
ReSharper를 원하는 대로 사용하면 aspx 파일을 리팩터링하는 데 많은 도움이 됩니다.
- 솔루션을 설정하고 빈 웹 응용 프로그램 만들기
- 모든 파일 복사 위치
- 웹 사이트 프로젝트의 x 파일에 네임스페이스가 없습니다.적절한 네임스페이스로 클래스 랩하기
- 복사하는 동안 하위 폴더의 모든 페이지가 프로젝트 이름과 폴더 이름으로 변경되어 40ish가 되었습니다.
public partial class FolderName_Projectname : Page
필요한 경우 모든 파일의 이름을 다시 선택하거나 수동으로 변경합니다.다음과 같은 여러 오류가 발생하는 경우"There is already a member Page_Load() defined"
잘못된 클래스 이름과 중복 때문일 가능성이 높습니다. - 네임스페이스를 추가한 후
교체하다
CodeFile
모든 aspx 페이지에서Codebehind
특히 하위 폴더에 있는 파일에 주의를 기울입니다.확인Inhertis=""
상대 경로를 포함하지 않습니다.당신의 네임스페이스가 모든 것을 관리합니다.따라서 올바른 형식은Inherits="Namespace.classname"
클래스에 네임스페이스 NaSpa와 파일 이름 foo.cs 이 있으면 다음과 같습니다.Inherits="NaSpa.foo"
모든 파일을 준비한 후(마스터 페이지를 잊지 않고) "웹 응용프로그램으로 변환"을 실행합니다.나중에 오류가 발생하면 헹구고 반복합니다."TextBoxName을 찾을 수 없습니다. 참조가 누락되었습니까?"와 같은 오류가 발생할 경우 aspx 페이지를 검사하는 것을 잊지 마십시오.자동으로 생성된 디자이너 파일을 확인하는 것이 좋습니다.한다면
TextBoxName
여기에 나타나지 않습니다. 변환이 완전히 성공하지 못했습니다.- 누락된 종속성을 해결합니다.
- 빌드
VS 2010에서 새 웹 애플리케이션을 생성합니다.
Windows 탐색기를 사용하여 모든 파일을 프로젝트 폴더에 복사합니다.
VS 2010 솔루션 탐색기는 모든 파일을 표시합니다.
파일 및 폴더 선택 - 프로젝트에 포함을 마우스 오른쪽 단추로 클릭합니다.
프로젝트 솔루션 탐색기를 마우스 오른쪽 단추로 클릭하고 웹 응용 프로그램으로 변환을 선택합니다.
App_Code 폴더의 이름이 old_app_code로 변경되는 등 약간의 차이점이 있습니다. 놀랍게도 오류가 발생하지 않습니다.개체 데이터 원본의 TypeName과 @Page 태그의 상속에는 [ProjectName]이 필요할 수 있습니다.접두사가 전역으로 추가되었습니다.예를 들어 유형 이름이 "BusinessLogic"인 경우.OrderManager" 및 프로젝트 이름은 InventorySystem이며 InventorySystem으로 변경해야 합니다.비즈니스 로직.주문 관리자.또한 필수 필드 검사기와 같은 일부 표시 변경 사항은 더 이상 빨간색 글꼴로 기본 설정되지 않고 검은색으로 기본 설정됩니다.
저는 처음에 같은 문제에 직면했습니다.Wrox Professional ASP를 팔로우한 후.NET 4.0 책, 저는 제 사례에 대한 다음과 같은 해결책을 찾았습니다.
저는 처음에 새로운 웹 애플리케이션을 만들었습니다.모든 웹 사이트 파일을 웹 응용 프로그램 폴더에 복사했습니다.응용프로그램을 마우스 오른쪽 단추로 클릭하고 웹 응용프로그램으로 변환을 클릭합니다.
웹 앱을 웹 앱으로 변환해야 하는 이유를 물어볼 수 있습니다.대답은 웹 사이트를 만들 때 필요할 때마다 .cs 파일을 코딩하기만 하면 된다는 것입니다.그러나 웹 응용 프로그램은 자동으로 .design.cs (또는 .vb)과 .cs 파일을 코드 및 설계 섹션에 선언합니다.
다음: 웹 사이트의 다른 파일에 대한 PAGE 지시문의 'Inherits' 속성과 같은 수동 참조를 모두 제거합니다. 네임스페이스가 클래스를 중앙에서 참조합니다.
또한 프로젝트에 OBJ와 BIN 폴더를 포함하지 않았기 때문에 문제에 직면했습니다.BIN 및 OBJ 폴더가 누락되었다고 생각되는 경우 솔루션 탐색기에서 '모든 파일 표시' 아이콘을 클릭한 다음 누락된 폴더를 마우스 오른쪽 단추로 클릭하여 프로젝트에 추가합니다.(프로젝트와 함께 컴파일할 수 있도록 하기 위해)
업데이트: @deadlychambers가 댓글에서 지적한 것처럼:"Ctrl + Shift + F"를 실행하여 모든 곳을 검색한 다음 다음Inherits="(.*?)"
이렇게 하면 모든 항목을 찾을 수 있고 시간을 절약할 수 있습니다!
기본 ASP 이름 공간이 더 이상 작동하지 않는 것 같습니다.따라서 페이지 외부에서 내 UserControls.ascx 페이지를 호출할 수 없습니다.이들에게 네임스페이스를 제공하고 기본값을 ASP에서 내 네임스페이스로 변경하는 것이 효과적인 것처럼 보였습니다.
언급URL : https://stackoverflow.com/questions/735054/how-to-convert-asp-net-website-to-asp-net-web-application
'programing' 카테고리의 다른 글
Excel 프로그래밍 시 선택 항목을 없음으로 설정 (0) | 2023.05.08 |
---|---|
Git 워크플로우 및 기본 재배치 대 병합 질문 (0) | 2023.05.08 |
VB.NET 빈 문자열 배열 (0) | 2023.05.08 |
셸(BASH/ZSH/SH)을 통해 파일의 절대 경로를 얻는 방법은 무엇입니까? (0) | 2023.05.08 |
VB에서 암시적 변환 연산자를 정의하는 방법이 있습니까?NET? (0) | 2023.05.08 |