在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项目(也可打包,发布到nuget上,供他人使用):

1、就是带UI的库,因为作为一个库项目,所以这个项目的Program.cs和Starup.cs就没有作用了,其实只留 下Controller和Views就好了

2、wwwroot中的前端资源(js,css)还是需要存在的(只保留项目中View用到的前端资源文件就可以),再把view中引用的前端资源的路径加上wwwroot

3、同时项目“输出类型”改为“类库”,接下来,把views中的文件,wwwroot中的文件的属性从“内容”改成“嵌入的资源”;

4、同时对Controller中的Action使用对应的HttpGet,HttpPost,HttpPut,HttpDelete等请求谓词和准确的请求url

 开发一个带UI的库(asp.net core 3.0)-LMLPHP

另一个项目是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         }
10-15 07:00