2012-08-31 2 views
0

최근 내 솔루션에서 이상한 점을 발견했습니다. 항상 프로젝트에서 루트 네임 스페이스를 비워 둡니다. 그런 다음 페이지의 상속 지시문에 네임 스페이스를 포함하여 모두 정상적으로 작성하고 코드 뒤에 네임 스페이스를 사용합니다. 모든 것이 예상대로 작동했습니다.네임 스페이스의 이상한 동작

이제 플러그인 지향 프로그래밍이 발생하고 VirtualPathProvider를 사용하고 있습니다. forums.asp.net 기사에서 찾을 수있는 표준 클래스입니다. VirtualPathProvider가 플러그인 프로젝트 (네임 스페이스 MEFTestPlugin1 pEx.)에 포함 된 페이지를 확인할 수 없어서 네임 스페이스가없는 곳에서 발견되었습니다.

잘못된 : ~/플러그인/MEFTestPlugin1.dll/MEFTestPlugin1.Default.aspx

찾았습니다 ~/플러그인/MEFTestPlugin1.dll/

은 그래서에서 루트 네임 스페이스를 통보했다 Default.aspx를 프로젝트를 시작한 다음 첫 번째 URL이 작동했습니다. 그러나 코드 숨김을 찾을 수 없습니다.

<%@ Page Title="" Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="MEFTestPlugin1._Default" %> 

Public Class _Default 
    Inherits System.Web.UI.Page 

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     Response.Write("Code-Behinds Worky") 
    End Sub 
End Class 

또는

<%@ Page Title="" Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="MEFTestPlugin1.MEFTestPlugin1._Default" %> 

Namespace MEFTestPlugin1 
    Public Class _Default 
     Inherits System.Web.UI.Page 

     Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
      Response.Write("Code-Behinds Worky") 
     End Sub 
    End Class 
End Namespace 

공지 사항 페이지 지시자의 더블 네임 스페이스 :

그래서 드디어 두 작업의 조합이라는 것을 발견했다.

내 모든 솔루션과 프로젝트에서 이러한 일이 발생했기 때문에 나는 알지 못했습니다. 다운로드 한 모든 예제 솔루션은 어셈블리 및 루트 네임 스페이스에 정보를 제공하고 코드 네임에 네임 스페이스를 정의하지만 정상적으로 작동합니다!

누구에게 무슨 문제가 있는지 알고 있습니까? 물론 내가 솔루션 구성에 놓친 뭔가가 ... 아니면 내 모든 물건이 VB는 사실 !! ?? 내 솔루션이 이전 버전에서 VS2010으로 업그레이드되었습니다. 그 사실이 문제일까요?

감사합니다.

답변

0

글쎄,이게 VB 네임 스페이스 관리와 관련이 있고, C#과 다르고 DI에 영향을 준다는 사실이 밝혀졌습니다. IoC 및 디커플링을 위해 Areas 및 Ninject 용 MEF를 삭제했습니다.

관련 문제