0

最近在我的解决方案中发现了一件奇怪的事情。我总是在我的项目中将根命名空间留空。然后,我像往常一样编写所有内容,包括页面的继承指令上的名称空间,并在后面的代码中使用子句名称空间。一切都按预期工作。

现在我正在体验面向插件的编程,并且我正在使用 VirtualPathProvider。可以在 forums.asp.net 文章中找到的标准类。发生的事情是 VirtualPathProvider 无法解析插件项目(命名空间 MEFTestPlugin1 pEx。)中的嵌入页面,我发现那里没有命名空间。

错误:~/Plugins/MEFTestPlugin1.dll/MEFTestPlugin1.Default.aspx

找到:~/Plugins/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。这个事实会是问题吗?

谢谢。

4

1 回答 1

0

好吧,发现这是与 VB 命名空间管理有关的东西,它的工作方式与 C# 不同并且会影响 DI。我放弃了用于区域的 MEF 和用于 IoC 和解耦的 Ninject。

于 2013-02-11T09:43:51.820 回答