2011-08-10 4 views
1

'ASP'네임 스페이스는 웹 사이트 프로젝트의 소스 코드, 어디서나 (또는 ​​적어도 웹 사이트의 프로그래머가 명시 적으로 사용하지 않는) 사용되지 않았기 때문에 생성 된 것으로 보입니다. 그것이 어떻게 완전하게 실현되는지 알고 싶습니다. 예를 들어시작 (빌드)에서 완료 (런타임)까지 ASP.NET 웹 사이트 프로젝트에 대해 자동 생성 된 ASP 네임 스페이스가 어떻게 구현됩니까?

: 은, 그 명령은
를 찾을 수는 ASP 네임 스페이스의 생성과 그렇다면를 구동 MSBuild에서의 책임인가? I C# 컴파일러가 자체의 의지에서 네임 스페이스를 만들지 않으므로 웹 사이트 프로그래머가 사용하지 않아도 ASP 네임 스페이스에 을 입력해야합니다. 아마 이 다른 도구로 소스 코드로 생성되었을 수도 있습니다. 'Temporary ASP.NET Files'폴더에는 약간의 영향이있을 수 있습니다. 당신 이 볼 수 있듯이, 내가 원하는 잠금을 해제하고 네임 스페이스 ...

비주얼 스튜디오는 ASP 네임 스페이스를 사용할 수 있도록 공구를 갖고있는 것 같아요 을 이해하기 위해 모든 피투성이 세부 사항 (그것에 대한 인텔리 지원) 그러나 그것은 그것에 대한 나의 이해를 가린다.

'ASP'네임 스페이스는 웹 사이트에서 처음부터 끝까지 어떻게 구현됩니까?

는 (나는이 모든 것을 설명하는 좋은 기사를 발견하지 않았습니다.)


다음은 ASP 네임 스페이스는 .NET 반사판에 표시됩니다. ( Rick Strahl's blog에서 촬영이 이미지) 내가 그런 경우가 아니라면 ... 당신은 서버 컨트롤 태그에 접두사를 찾고 있다고 가정거야

enter image description here

+0

"ASP 네임 스페이스"란 무엇을 의미합니까? HTML 디자이너의 소스보기에서 웹 컨트롤에 사용되는 접두사를 언급하고 있습니까? –

+0

@Rick - 네, .NET 리플렉터 http://www.west-wind.com/weblog/images/11/o_PageInheritance.png에서이 스크린 샷과 같이 컴파일 된 IL에서 본 것과 동일한 것 같습니다. –

답변

0

알려주세요.

접두어는 web.config 파일의 configuration/system.Web/pages/controls 아래에 등록됩니다. 원하는 경우 수정하거나 자신의 컨트롤 라이브러리에 대한 추가 접두사를 등록 할 수 있습니다. 여기

MSDN 정보 : http://msdn.microsoft.com/en-us/library/ms164640.aspx

+0

이 초기 응답에서 나는 브리지를 보지 못합니다 - 이것이 ASP 네임 스페이스의 소스라면 컴파일 된 DLL로 만드는 방법은 무엇입니까? –

+0

@ 존 - 아니, 그게 니가 무슨 말을하는 줄 알았어. 전에는 그것을 보지 못했지만, 최근에는 Reflector로 웹 프로젝트를 둘러 본 적이 없습니다. :-) 나는 다른 웹 앱에서 똑같은 것을 보는지 살펴볼 것입니다. –

0

이 네임 스페이스는 ASP.NET이 .ASPX과의 .ascx 파일을 구문 분석에서 생성하는 코드에 사용됩니다.

왜 내가 신경 써야할지 모르겠다. 그것은 단지 네임 스페이스 일뿐입니다. 그것에 대해 "특별한"것은 없으며 그 네임 스페이스에서 아무 것도 참조하지 말아야합니다.


이 모든 작동 방식을 이해하려면 "ASP.NET Life Cycle"을 읽어보십시오.

+0

John, 그것은 Continuous Integration 시스템에 문제가 있음을 나타냅니다. 그러나 일반적으로 학문적 관점에서도 유효한 질문이라고 생각합니다. 그래서 저는주의를 기울입니다. 당신은 맞습니다. 개발자로서 신경 쓸 필요는 없습니다. 호기심이 아닐지라도이 질문을 할 때 다른 사람들도 이해할 수 있기를 바랍니다. –

+0

aspx 및 ascx 파일의 구문 분석 된 정보에서 최종 컴파일 된 DLL까지 어떻게 전달되는지 알고 있습니까? 나는 단계와 그것이 통과하는 것들에 대한 설명을 기대하고있다. –

+0

예, 있습니다. [ASP.NET 라이프 사이클] (http://msdn.microsoft.com/en-us/library/ms227435.aspx)이라고합니다. 그리고 귀하의 CI 시스템이이를 알고 있어야한다고 표기하십시오. TFS를 사용하는 웹 응용 프로그램의 CI를 수행하고 어떤 코드가 왜 신경을 쓰는지 전혀 모릅니다. 특히 Microsoft가 코드 생성 방법을 보장했는지 모르겠으므로 네임 스페이스의 이름이 매일 바뀌면 어떻게 될지 궁금합니다. –

0

ASP. 네임 스페이스를 사용하면 캐스트가 작동하는 것을보다 안전하게 사용자 지정 컨트롤을 동적으로로드 할 수 있습니다.

사용자 지정 컨트롤이 ASP에서 취할 수있는 이름을 제어 할 수 있습니다.당신이 LoadControl

당신은

MSDN http://msdn.microsoft.com/en-us/library/c0az2h86(v=vs.100).aspx의 전체 단계를 읽을 수를 사용할 때 ASP.ControlClass에 대한 참조를해야합니다 지금은 이름 공간과 동적 제어의 선언에 ClassName="ControlClass"을 배치하여 네임 스페이스는 안전한 캐스트를 만들려면 ASP를 사용하지 않을 때. 네임 스페이스 및 제어 당신이하려고 할 때 다음의 경우는 (나는 이유는 모르겠지만, 그 시점으로 내 단절 시간에 실패) 실패 기준을

namespace ASP 
{ 
    [CompilerGlobalScope] 
    public class Control_Class_nameByDirectory : ControlClass 
    { 
     [DebuggerNonUserCode] 
     public ControlClass(); 

     protected override bool SupportAutoEvents { get; } 

     [DebuggerNonUserCode] 
     protected override void FrameworkInitialize(); 
    } 
} 

거기 만든 수 있고, 자동으로 이름을 따 왼쪽 이 때문에 실패 할 수 있습니다 (ControlClass)LoadControl("~/module/Control.ascs") 같은 캐스팅 Control_Class_nameByDirectory로 인식하지 이제 MSD는 말한다대로 제어 헤더에 클래스 이름을 선언하는 경우 ControlClass

같은 결과가 하나의 같은 클래스 이름을 얻을 수있는 제어 할 수 있는지 확인하십시오 당신 정의 :

namespace ASP 
{ 
    [CompilerGlobalScope] 
    public class ControlClass : global::ControlClass 
    { 
     [DebuggerNonUserCode] 
     public ControlClass(); 

     protected override bool SupportAutoEvents { get; } 

     [DebuggerNonUserCode] 
     protected override void FrameworkInitialize(); 
    } 
} 

여기에서 ASP.ControlClass을 사용하면 실패 할 경우 걱정없이 컨트롤을 전송할 수 있습니다.

여기에 설명 된 단계를 따르면 http://msdn.microsoft.com/en-us/library/c0az2h86(v=vs.100).aspx과 같은 문제를 피할 수 있습니다. (그리고 나는 그들과 마주하고있다)

ASP에 대한 참조없이 사용자 정의 컨트롤을 사용하지 못하는 문제. 네임 스페이스는 Dot net 4.0 및 4.5 버전에서 모두 볼 수 있습니다. 그리고 최악의 경우는 무작위 적 실패입니다. 즉, 어떤 때는 때때로 일어 났고, 어떤 때는 그렇지 않았고, 그 이유를 찾을 수 없었습니다.