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

posted @ 2017-12-01 17:01  第一序列  阅读(333)  评论(0编辑  收藏  举报