開發一個帶UI的庫(asp.net core 3.0)
在GitHub上有個專案,本來是作為自己研究學習.net core的Demo,沒想到很多同學在看,還給了很多星,所以覺得應該升成3.0,整理一下,寫成博分享給學習.net core的同學們。
專案名稱:Asp.NetCoreExperiment
專案地址:https://github.com/axzxs2001/Asp.NetCoreExperiment
當你想用asp.net core做一個三方庫,不但有api實現功能,還希望能用UI來展現或設定你的功能時,這個blog或許對你有用。
用Demo說話,原始碼GiuHub庫:https://github.com/axzxs2001/Asp.NetCoreExperiment/tree/master/Asp.NetCoreExperiment/EmbeddedResources
建立兩(或三個)個專案
一個是asp.net core web mvc專案:就是帶UI的庫,因為作為一個庫專案(可打成包,併發布到nuget上),所以這個專案的Program.cs和Starup.cs就沒有作用了,其實只留 下Controller和Views就好了,當然,wwwroot中的前端資源還是需要存在的(只保留專案中View用到的前端資原始檔就可以),同時專案“輸出型別”改為“類庫”,接下來,把views中的檔案,wwwroot中的檔案的屬性從“內容”改成“嵌入的資源”,再把view中引用的前端資源的路徑加上wwwroot;同時對Controller中的Action使用對應的HttpGet,HttpPost,HttpPut,HttpDelete等請求謂詞和準確的請求url
另一個專案是API或Web MVC專案,只需要Startup.cs中引入
1 public void ConfigureServices(IServiceCollection services) 2 { 3 services.AddControllersWithViews().AddRazorRuntimeCompilation(option => 4 { 5 option.FileProviders.Add(new EmbeddedFileProvider(typeof(EmbeddedResourcesPage.Controllers.PageController).GetTypeInfo().Assembly)); 6 }); 7 } 8 public void Configure(IApplicationBuilder app, IWebHostEnvironment env) 9 { 10 app.UseStaticFiles(new StaticFileOptions 11 { 12 FileProvider = new EmbeddedFileProvider(typeof(EmbeddedResourcesPage.Controllers.PageController).GetTypeInfo().Assembly) 13 }); 14 …… 15 }
&n