0

最近、私のソリューションに奇妙なことに気づきました。プロジェクトでは常にルート名前空間を空のままにします。次に、ページの継承ディレクティブに名前空間を含め、コードビハインドで名前空間句を使用して、すべてを通常どおりに記述します。すべてが期待どおりに機能しました。

現在、プラグイン指向プログラミングを経験しており、VirtualPathProviderを使用しています。forums.asp.netの記事にある標準クラス。何が起こったのかというと、VirtualPathProviderはプラグインプロジェクト(名前空間MEFTestPlugin1 pEx。)に埋め込まれたページを解決できず、名前空間がない場所にあることがわかりました。

間違った例:〜/ Plugins / MEFTestPlugin1.dll / MEFTestPlugin1.Default.aspx

見つかりました:〜/ Plugins / MEFTestPlugin1.dll / Default.aspx

そのため、プロジェクトのルート名前空間に通知する必要があり、最初のURLが機能しました。しかし、その後、コードビハインドは見つかりませんでした。

だから私はついに2つの有効な組み合わせだけが次のようになっていることを発見しました:

<%@ 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

pageディレクティブのdouble名前空間に注意してください。

だから、それは私のすべてのソリューションとプロジェクトで起こっていて、私は知りませんでした。私がダウンロードするソリューションの例では、アセンブリとルートの両方の名前空間が通知され、名前空間がコードビハインドで定義されていますが、それらは正常に機能します!!

何が問題になるのか誰か知っていますか?確かに私はソリューションの構成で見逃したものです...または私のすべてのものがVBであるという事実!!?? 私のソリューションは以前のバージョンからVS2010にアップグレードされています。その事実が問題になるのでしょうか?

ありがとう。

4

1 に答える 1

0

これはVB名前空間管理に関連するものであり、C#とは動作が異なり、DIに影響することがわかりました。AreasにはMEFを、IoCとデカップリングにはNinjectを削除しました。

于 2013-02-11T09:43:51.820 に答える