2012-03-29 2 views
10

내 컴퓨터의 루트 웹 구성 (Windows/Microsoft.NET/... 중 하나)에 system.web/pages/namespaces/add 요소가 포함되어 있는지 여부에 관계없이 각각의 aspx.cs CodeBehind 파일 위에 명령문을 사용하는 것이 여전히 요구됩니다. 왜? 컴파일해야하며 페이지가 무엇인지 이해할 수 없다고 불평하지 않아야합니다. 결국, <add namespace="System.Web" />은 루트 web.config에 존재합니다!Web.config의 system.web/Pages/Namespaces 태그의 핵심은 무엇입니까?

+0

거짓 불만으로 컴파일 되나요, 아니면 실제로 컴파일되지 않습니까? VS는 항상 webconfig에 추가 된 컨트롤 네임 스페이스로 인해 어려움을 겪었지만, 대부분의 경우 모든 것이 빌드되어 제대로 실행됩니다. –

+0

컴파일되지 않습니다. CodeBehind 파일에 서버 코드가있는 시스템에서는이 특정 웹 구성 섹션에 실제로 0이됩니다. – JonathanWolfson

답변

9

system.web/pages/namespaces/add 요소 .ASPX 파일, 컴파일 전에 소스의 어떤 전처리 없기 때문에 여전히 적절한 using 할 필요 (.ASPX.CS 포함한) 정상 .CS 파일이다. 따라서 .ASPX.CS은 모두 using Namespace 선언을 포함하여 유효한 CS 파일이어야합니다.

+0

안녕하세요, '사전 처리'에 대해 자세히 설명해 주실 수 있습니까? .aspx 파일은 '전처리'중에 'system.web/pages/namespaces'(또는 [@import] 지시어)와 어떻게 상호 작용합니까? 감사. – pinopino

+0

@pinopino - 질문이 있으시면 새 질문을하십시오. (질문을 명확히 해달라고 요청하는 경우 실제로는 원본에 연결하십시오.) ASP.Net과 관련하여 사전 처리에 대해 배우고 싶은 점이 무엇인지 모르겠습니다. [wikipedia - Preprocessor] (http://en.wikipedia.org/wiki/Preprocessor_%28programming%29)로 시작하는 것이 좋습니다. –

7

이렇게하면 문을 포함 할 필요가 없도록 aspx 및 ascx 파일에 네임 스페이스가 추가됩니다. documentation on MSDN에서

:

네임 스페이스 요소는 어셈블리를 미리 컴파일하는 동안 사용에 수입 지시의 컬렉션을 정의합니다. 이 특성은 ASP.NET 페이지의 @ Import 지시문에 해당합니다. @ Import 지시문을 사용하면 에 응용 프로그램의 모든 페이지에 자동으로 가져 오는 네임 스페이스를 지정할 수 있습니다.

코드 숨김이이 web.config 항목의 영향을받지 않습니다.

+0

이것은 VB.NET과 관련하여 내가 찾은 것입니다. 내 컴퓨터 중 하나에서 나는 만들 수없고 다른 컴퓨터에서 할 수 있습니다. 그래서 저는 스크린에 가서 보았습니다. 빌드 할 수있는 것은 "Microsoft Visual Basic 2010 01019-532-2002102-70462"입니다. 이것은 할 수 없습니다 : "01019-532-2002102-70649". 희망이 도움이됩니다. –

5

다른 답변은이 web.config 설정이 ASPX 페이지에만 영향을 미치며 ASPX.CS와 같은 코드 숨김 페이지에는 영향을주지 않음을 나타냅니다. .NET 4.0을 대상으로하는 ASP.NET 웹 사이트에서이 문제를 테스트 한 결과 C# 페이지에서는 true이지만 VB 페이지에서는 true가 아닌 것으로 나타났습니다.

web.config 설정에 네임 스페이스를 추가하면 모든 ASPX.VB 페이지의 맨 위에 나열해야한다는 요구 사항이 제거되었습니다.

나는 이것이 어떤 이론인지에 관심이 있습니다. 나는 파일 뒤에 ASPX.CS와 ASPX.VB 코드 모두에서 작동 할 것이라고 생각했을 것이다.

관련 문제