2012-08-31 108 views
0

最近在我的解決方案中發現了一件奇怪的事情。 我總是將根名稱空間留在我的項目中。然後,我將所有的命名空間寫入頁面的繼承指令中,並在後面的代碼中使用子句名稱空間。一切按預期工作。命名空間中的奇怪行爲

現在我遇到了面向插件的編程,我正在使用VirtualPathProvider。標準類可以在forums.asp.net文章中找到。 發生了什麼事是VirtualPathProvider無法解析插件項目中的嵌入式頁面(命名空間MEFTestPlugin1 pEx。),並且發現在那裏沒有命名空間。

錯誤:〜/插件/ MEFTestPlugin1.dll/MEFTestPlugin1.Default.aspx

實測值:〜/插件/ MEFTestPlugin1.dll/Default.aspx的

所以我不得不通知在根命名空間項目,然後第一個網址工作。 但後來沒有找到代碼隱藏。

所以,我終於發現,只有兩個工作組合是:

<%@ 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。 我放棄了MEF的地區和Ninject的IoC和解耦。