最近在我的解决方案中发现了一件奇怪的事情。 我总是在我的项目中将root命名空间留空。然后,我正常编写所有内容,包括页面的inherits指令上的名称空间,并在后面的代码中使用子句名称空间。一切都按预期工作。
现在我正在体验面向插件的编程,而我正在使用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。这个事实可能是问题吗?
感谢。
答案 0 :(得分:0)
嗯,发现这与VB命名空间管理有关,它与C#不同,影响DI。 我放弃MEF for Areas和Ninject for IoC并解耦。