Mvc5插件化 Plugin.Mvc 和 RazorGenerator.Mvc
手头有一个项目,使用的RazorGenerator.Mvc,使一个项目插件化,这个插件会把cshtml也编译到DLL,同时也可以把.js ,.css 资源打包进DLL中
用了一段时间,发现RazorGenerator.Mvc适合小型项目或者开发公共模块或者插件使用很方便,但是实现插件化还是有些麻烦的。
后来找到了另外一个插件Plugin,可以实现项目插件化,使用步骤:
1.主项目引入
根据项目需求选择合适的版本,这个是asp.net.mvc >=5.1的
2.插件项目引入
3.插件项目创建启动类
public class SchoolPlugin : IPlugin {
//插件名字 public string Name { get { return "School"; } } //初始化路由规则 public void Initialize() { var route = RouteTable.Routes.MapRoute( name: this.Name, url: this.Name + "/{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, pluginName = this.Name } ); route.DataTokens["area"] = this.Name; } //卸载插件 public void Unload() { RouteTable.Routes.Remove(RouteTable.Routes[this.Name]); } }
4.手动copy插件目录:bin(类库-Controller和业务),Content(主要是css), Scripts(js),Views(视图) 等目录 其中bin是必须的.
也可以自动copy, 生成事件的后期生成事件命令行:
rd /s /q $(SolutionDir)PluginMain\Plugins\School xcopy /s /y $(ProjectDir)Views $(SolutionDir)PluginMain\Plugins\School\Views\ xcopy /s /y $(ProjectDir)Content $(SolutionDir)PluginMain\Plugins\School\Content\ xcopy /s /y $(ProjectDir)Scripts $(SolutionDir)PluginMain\Plugins\School\Scripts\
5.启动主项目, 插件项目访问路径: /School/Home/Index