手頭有一個項目,使用的RazorGenerator.Mvc,使一個項目插件化,這個插件會把cshtml也編譯到DLL,同時也能夠把.js ,.css 資源打包進DLL中css
用了一段時間,發現RazorGenerator.Mvc適合小型項目或者開發公共模塊或者插件使用很方便,可是實現插件化仍是有些麻煩的。html
後來找到了另一個插件Plugin,能夠實現項目插件化,使用步驟:mvc
1.主項目引入asp.net
根據項目需求選擇合適的版本,這個是asp.net.mvc >=5.1的this
2.插件項目引入url
3.插件項目建立啓動類spa
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是必須的..net
也能夠自動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命令行