Asp.net mvc ASP.NETMVC3中的多项目领域

Asp.net mvc ASP.NETMVC3中的多项目领域,asp.net-mvc,visual-studio-2010,asp.net-mvc-2,mvccontrib,asp.net-mvc-3,Asp.net Mvc,Visual Studio 2010,Asp.net Mvc 2,Mvccontrib,Asp.net Mvc 3,有人知道asp.net mvc 3中的多项目区域支持吗?因为它在MVC2中降级为未来状态。如果它仍然没有包括在内,那么我们应该期待。你能分享你的经验吗 管理大型应用程序的推荐方法是什么?我读到了。在什么情况下推荐MEF?我是微软ASP.NET MVC的开发负责人 没有计划在ASP.NET MVC 3中包含多项目区域。然而,这绝对是我们计划在未来再次访问的一个领域 与此同时,MvcContrib的解决方案可能是最好的选择。MVC Futures下载版仍然包含原始多项目区域功能的旧版本(可能只是半功

有人知道asp.net mvc 3中的多项目区域支持吗?因为它在MVC2中降级为未来状态。如果它仍然没有包括在内,那么我们应该期待。你能分享你的经验吗


管理大型应用程序的推荐方法是什么?我读到了。在什么情况下推荐MEF?

我是微软ASP.NET MVC的开发负责人

没有计划在ASP.NET MVC 3中包含多项目区域。然而,这绝对是我们计划在未来再次访问的一个领域


与此同时,MvcContrib的解决方案可能是最好的选择。MVC Futures下载版仍然包含原始多项目区域功能的旧版本(可能只是半功能版本)。由于还提供了完整的源代码,因此您可能能够构建一个根据需要定制的解决方案。

我需要相同的结构,因此我已经找到了如何将区域作为单独的项目。不需要修改代码,只需要做一些配置工作

我将为此创建一个博客条目,但以下是基本步骤

假设您有一个MVC应用程序项目,这将是您的“shell”应用程序

  • 右键单击shell项目并“添加区域…”。键入区域名称。这将创建一个区域文件夹,其中包含您的区域。(这不是100%需要的,但您确实需要“Areas”文件夹,您可以为您的应用程序窃取xxAreaRegistration类。)

  • 在解决方案中创建一个新的MVC3空项目以匹配您的区域。将xxAreaRegistration.cs文件移动到新项目中,并根据需要调整名称空间

  • 删除模板向导添加的区域文件夹下的文件夹

  • 修改新项目的web.config并取出连接字符串和身份验证、成员资格、配置文件、角色管理器部分。您并不真正需要web.config,但是没有它razor intellisense就无法工作

  • 在shell项目的“Areas”文件夹中创建一个虚拟目录,将您所在区域的名称作为别名,并将其指向您的“area”项目。为此,您需要使用IIS或IIS Express。我使用IIS。在IIS express中,您必须修改配置文件。我认为ScottGu有一篇关于如何做到这一点的博客

  • 在“区域”项目上创建生成后事件,以将dll复制到“shell”项目bin文件夹。我的生成事件是:复制$(TargetDir)\$(TargetFileName)$(SolutionDir)\ShellProjectName\bin\$(TargetFileName)

  • 在shell web.config中,将“area”项目添加到System.web/Assemblies部分

  • 代替6/7,您可以只引用“area”项目和“shell”项目,它也可以正常工作。但是,每次都必须部署所有“区域”DLL。我可能要做一些类型的探测代码,在应用程序启动时使用反射或MEF将“区域”程序集添加到应用程序域

    您可能还希望在shell应用程序和area应用程序中编辑路由并向其添加名称空间过滤器。这样,您就不必担心sell应用程序和area应用程序之间存在重复的控制器名称冲突

    就这样。一旦我得到一篇正式的博客文章,我会尽量记住在这里添加一个链接


    如果有人感兴趣的话,我在博客上写下了我是如何做到这一点的。

    在我看来,这是ASP.NET MVC目前最薄弱的部分。我希望MVC团队能尽快完成这项工作。能够创建模块化环境对我们来说绝对是必须的。MVC4的时机可能会早一点,但随着Silverlight的企业LOB处于悬而未决的状态,您需要将故事固化以切换到MVC4。。。。希望P&P能参与一个类似丝绸的例子!嗯,看起来很有趣。等待看到您的博客条目,特别是MEF部分在进一步测试后,我确定不需要参考该地区的项目。显然,MVC代码使用BuildManager来获取程序集列表。所以,除了设置“区域”项目以输出到shell项目bin文件夹之外,您不需要做任何事情。