2009-12-09 2 views
1

계약자 중 한 명이 ASP.NET 2.0 웹 사이트를 제공했으며이를 우리 프로세스에 통합하는 데 약간의 어려움을 겪고 있습니다. 그는 프로젝트를 zip 디렉토리, 솔루션 파일 또는 기타로 제공했습니다. Visual Studio에서 열기 -> 웹 사이트 옵션을 사용하여 열 수 있으며 웹 사이트가 실행됩니다. 그러나 웹 응용 프로그램 프로젝트로 설정하여 공유 라이브러리에 프로젝트 참조를 추가 할 수 있도록했습니다. 대신 'bin'디렉토리에 연결되는 대신에 정규 프로젝트를 실제로 갖고 싶어합니다.ASP 2.0 및 부분 클래스

이상한 문제가 있습니다. 나에게 약간의 코드를 추출하자

HeaderControl.ascx

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="HeaderControl.ascx.cs" Inherits="Controls_WebUserControl" %> 

HeaderControl.ascx.cs

public partial class Controls_WebUserControl : System.Web.UI.UserControl 
{ 
    protected void Page_Load(object sender, EventArgs e) 

좋아, 이건 좀 이상하지만 적어도 법적 것 같다. 기본 클래스는 코드 숨김 (코드 파일?)에 부분 정의가 있습니다. 그러나 다른 많은 컨트롤, 같은 방법으로 예를 들어

SomeControl.ascx을 정의

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="SomeControl.ascx.cs" Inherits="Controls_WebUserControl" %> 

SomeControl.ascx.cs

public partial class Controls_WebUserControl : System.Web.UI.UserControl 
{ 
    protected void Page_Load(object sender, EventArgs e) 

예상대로, 나는 나의 새로운 웹 응용 프로그램을 빌드하려고 프로젝트에서 파일을 전송 한 결과 동일한 위치에 여러 가지 오류가 발생했습니다. 왜 컨트롤 클래스의 부분 정의를 정의하고 기본 클래스의 메서드를 재정의하는 코드로 설정되지 않았는지 이해하지 못합니다.

나를 실제로 얻는 것은 이것입니다. 원래 작품은 어떻게 작동합니까? 컴파일러가 실행되고 작동하므로 컴파일러는 내가 이해하지 못하는 것을해야합니다. Controls_WebUserControl 클래스는 어떻게됩니까?

+0

덧붙여 말하면, 계약자에게 해결책을 물었습니까? – ChrisF

+0

웹 사이트이므로 프로젝트 파일이 없습니다. –

답변

1

내가 제공하는 사이트가 작동하는 동안, 그것은 잘못되었다고 말할 것입니다.

웹 응용 프로그램 프로젝트와 달리 웹 사이트 프로젝트이기 때문에 작동합니다. 웹 사이트 프로젝트에는 웹 페이지의 네임 스페이스가 없습니다. 대신 각 페이지를 개별적으로 컴파일합니다. 즉, 페이지의 클래스 이름이 무시된다고 말할 수 있습니다.

웹 응용 프로그램 프로젝트에 가져올 때 네임 스페이스를 만들려고하는데 웹 페이지와 컨트롤의 공통 클래스 이름 때문에 실패합니다.

나는 웹 응용 프로그램으로 변환을 선택하고 마우스 오른쪽 버튼을 클릭 한 다음 페이지의 클래스 이름을 & 컨트롤로 수정했습니다.그것은 당신이되고 싶은 곳으로 데려다 줄 것입니다.

+0

감사합니다. 방금 asp.net 메모리 내 컴파일에 대한 기사를 읽었고 귀하의 게시물은 내 생각을 확인해주었습니다. 저는 여러분에게 동의합니다. 비록 이것이 작동한다고하더라도, 이런 종류의 설정은 가난한 습관입니다. 마법사를 실행하기 전에 실제로 클래스 이름을 수정하려고합니다. 수정해야 할 파일이 적습니다. – Egor

2

당신이 웹 응용 프로그램을 웹 사이트에서 변경으로 CodeFile="SomeControl.ascx.cs"를 교체해야합니다, 당신이 필요로하는 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 "웹 응용 프로그램으로 변환" . 이렇게하면 모든 페이지가 업데이트됩니다.

이 오래된 링크입니다,하지만 난 여전히 관련 생각 :

http://webproject.scottgu.com/CSharp/migration2/migration2.aspx