Asp.net mvc 3 使用Nuget打包ASP.NET MVC应用程序

Asp.net mvc 3 使用Nuget打包ASP.NET MVC应用程序,asp.net-mvc-3,nuget,Asp.net Mvc 3,Nuget,有没有人尝试过用Nuget打包整个ASP.NET MVC应用程序,对他有用吗?我有一堆控制器、视图、助手和实用程序,我想把它们引入另一个MVC项目 问题是,路线不起作用,我不知道它们是否应该起作用。问题是,我们引入的包的项目有自己的global.asax.cs和自己的路线。如何将其与我们当前项目的global.asax及其路线结合起来 因此,如果有人有过此类软件包的使用经验,请回复。您的路由将不会被合并,因此您需要自己合并这些路由才能实现此功能。如果您想保持路由的独立性,可以使用具有自己路由的区

有没有人尝试过用Nuget打包整个ASP.NET MVC应用程序,对他有用吗?我有一堆控制器、视图、助手和实用程序,我想把它们引入另一个MVC项目

问题是,路线不起作用,我不知道它们是否应该起作用。问题是,我们引入的包的项目有自己的global.asax.cs和自己的路线。如何将其与我们当前项目的global.asax及其路线结合起来


因此,如果有人有过此类软件包的使用经验,请回复。

您的路由将不会被合并,因此您需要自己合并这些路由才能实现此功能。如果您想保持路由的独立性,可以使用具有自己路由的区域,但是如果您只是引入一组控制器和视图,则需要在项目中编辑路由,以便它们在新应用程序中有意义。

您应该尝试使用MVC区域功能,允许从多个位置注册路由。要查看其外观,请右键单击一个MVC项目并选择Add/Area;然后查看创建的AreaRegistration文件


更新:使用WebActivator提供了另一种在启动时执行代码的方法,无需修改global.asax。

有一个可编写脚本的应用程序,可以帮助您复制所需的文件,请参阅:


这与Area/Webactivator设置配合得很好。

嘿,David,我发现了您的Webactivator软件包,它允许我完全按照自己的意愿进行操作—根据需要,将路线注册放在启动前或启动后方法中。但是,只有一个问题,那就是与global.asax.cs的交互,它已经存在于我们提取包的项目中。因此,我们必须小心路由名称不会重复,因为这样在运行时会出现“路由已在集合中”错误。现在唯一的解决办法是在我的包中为路由名称加前缀,或者你有其他想法吗?你确实需要确保路由名称在全局上是唯一的,否则MVC会崩溃。您可以有一个路由注册辅助程序,自动执行前缀。无论如何,必须“统一”路由名称并没有那么痛苦:)