当前位置: 首页 > news >正文

网站建设168天津滨海新区天气预报

网站建设168,天津滨海新区天气预报,济南网站建设找聚搜网络,php企业网站源码下载友情提示#xff1a;这篇有点长#xff0c;有点绕#xff0c;加油#xff01;上一篇文章#xff0c;简单的说明了一下.net项目模板的创建#xff0c;主要是通过在项目文件*.csproj同目录下添加.template.config文件夹和里面的template.json#xff0c;再用dotnet new -i… 友情提示这篇有点长有点绕加油上一篇文章简单的说明了一下.net项目模板的创建主要是通过在项目文件*.csproj同目录下添加.template.config文件夹和里面的template.json再用dotnet new -i来安装项目模板的本篇继续深入。首先定个小目标实现一个web api项目模板可以选择引入NLog库选择引入Dapper库同时希望可以选择用户权限认证方式这里假设是三种无固定角色自定义策略还可以在创建项目时输入文本信息比如作者信息上面这些输入项都是通过模板参数来实现的。其实仔细分析一下是三类参数1、判断类就是用不用这个三方库2、选择类三种授权方式中选一种3、输入文本类。同时在上一篇文章中我们是直接用源码生成模板的问题来了不可能让大家都用源码来生成本地模板这里如果能打成个包大家使用就简单多了确实微信把模板项目生成一个nupkg包可以上传到nuget.org上供其他人使用。那接来看实现步骤吧。为了大家有直观的感受我先把创建项目时需要用户录入的参数展示出来这次先看模板文件1、template.json在项目文件夹下的.template.config目录下{$schema: http://json.schemastore.org/template,author: 桂素伟,classifications: [ Common, 桂素伟模板, WebAPI, C#9 ],identity: GSW Nuget,name: GSW Nuget,shortName: GSWNuget,tags: {language: C#,type: project},sourceName: GSWNuget,symbols: {Author: {type: parameter,datatype: text,defaultValue: ,replaces: author,description: 作者},UseNLog: {type: parameter,datatype: bool,defaultValue: true,description: 是否使用NLog},UseDapper: {type: parameter,datatype: bool,defaultValue: true,description: 是否使用Dapper},AuthType: {type: parameter,datatype: choice,defaultValue: None,choices: [{choice: None,description: None},{choice: Role,description: Role},{choice: policy,description: Policy}]},None: {type: computed,value: (AuthType \None\)},Role: {type: computed,value: (AuthType \Role\)},Policy: {type: computed,value: (AuthType \Policy\)}},sources: [{modifiers: [{condition: (!UseNLog),exclude: [ NLog.config ]}]}] } sourceName: GSWNuget是项目名称。symbols下是配置模板参数UseDapperUseNLog是bool类型 让创建项目的人员来选择是否引入这些三方包。Author是输入文本类型其中的replate是要把项目文件中的所有author换成用户输入项目所以这个名称最好命名的不要那么通用。AuthType是选择权限的验证规划这里还在下面增加了三个选择项的运算结果项bool类型 NoneRolePolicy是通过用户的选择来决定具体的值。UseNLog虽然是个bool类型但是他的用途特殊在了json文件的后面有个sources这个的作用是决定NLog.config文件显示不显示在用户的项目中决定文件的存留与否。2、ide.host.json为了在IDE中显示这些值供用户输入还需要在template.json同目录下创建一个ide.host.json文件这个文件的作用就是在ide中把用户录入项友好的提示给用户同时准备了一个icon.png来给这个项目模板来充当图标它的存放位置与ide.host.json在同一级。{$schema: http://json.schemastore.org/vs-2017.3.host,icon: icon.png,symbolInfo: [{id: UseNLog,name: {text: Use NLog},isVisible: true},{id: Author,name: {text: Author},isVisible: true}, {id: UseDapper,name: {text: Use Dapper},isVisible: true}, {id: AuthType,isVisible: true}] } 3、创建web api项目GSWNuget围绕着上面三个需求展开先看program.cs文件/*********************************作者author********************************/ using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; #if (UseNLog) using NLog.Web; #endifnamespace GSWNuget {public class Program{#if (UseNLog)public static void Main(string[] args){var logger NLogBuilder.ConfigureNLog(nlog.config).GetCurrentClassLogger();try{logger.Debug(init main);CreateHostBuilder(args).Build().Run();}catch (Exception exception){logger.Error(exception, Stopped program because of exception);throw;}finally{NLog.LogManager.Shutdown();}}public static IHostBuilder CreateHostBuilder(string[] args) Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder {webBuilder.UseStartupStartup();}).ConfigureLogging(logging {// logging.ClearProviders();// logging.SetMinimumLevel(LogLevel.Trace);}).UseNLog(); #elsepublic static void Main(string[] args){CreateHostBuilder(args).Build().Run();}public static IHostBuilder CreateHostBuilder(string[] args) Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder {webBuilder.UseStartupStartup();}); #endif} } #if  #endif 是判断用户的输入决定用户项目走的分支这里是NLog的引入与不引入的分类其实不有一个点NLog的库要不要restore这个在项目文件中再说。再有一个是author最终会被展示图的GuiSuWei那个文本替换。再看一下GSWNuget.csproj同样是#if但需要在!-- --中毕竟是xml。Project SdkMicrosoft.NET.Sdk.WebPropertyGroupTargetFrameworknet5.0/TargetFrameworkVersion2.0.0/Version/PropertyGroupItemGroup!--#if (UseDapper)PackageReference IncludeDapper Version2.0.78 /#endif--PackageReference IncludeSwashbuckle.AspNetCore Version5.6.3 /PackageReference IncludeNLog.Web.AspNetCore Version4.12.0 //ItemGroup /Project 再看一下starup.cs/*********************************作者author********************************/ using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.HttpsPolicy; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using Microsoft.OpenApi.Models; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks;namespace GSWNuget {public class Startup{public Startup(IConfiguration configuration){Configuration configuration;}public IConfiguration Configuration { get; }public void ConfigureServices(IServiceCollection services){ #if Nonevar authType None; #endif #if Rolevar authType Role; #endif #if Ployvar authType Ploy; #endifservices.AddControllers();services.AddSwaggerGen(c {c.SwaggerDoc(v1, new OpenApiInfo { Title GSWNuget, Version v1 });});}public void Configure(IApplicationBuilder app, IWebHostEnvironment env){if (env.IsDevelopment()){app.UseDeveloperExceptionPage();app.UseSwagger();app.UseSwaggerUI(c c.SwaggerEndpoint(/swagger/v1/swagger.json, GSWNuget v1));}app.UseHttpsRedirection();app.UseRouting();app.UseAuthorization();app.UseEndpoints(endpoints {endpoints.MapControllers();});}} } 其中的 #if None  #if Role#if Policy是选择后结果的分支对应。再看一下appsettings.json在appsettings中是在//后用#if{#if(UseDapper)//Dapper: dapper config,#endif#if(UseNLog)//LogConfig: log config,#endifLogging: {LogLevel: {Default: Information,Microsoft: Warning,Microsoft.Hosting.Lifetime: Warning}},AllowedHosts: * } 到这里项目基本准备完毕接下来就要打包成nupkg这里要用到nuget.exe(这里下载 https://www.nuget.org/downloads)通过命令把模板项目GSWNuget生成nupkgnuget.exe生成nupkg时需要一个配置文件GSWNuget.nuspec这个文件与GSWNuget项目目录在同一级别。?xml version1.0 encodingutf-8? package xmlnshttp://schemas.microsoft.com/packaging/2012/06/nuspec.xsdmetadataidGSWNuget/idversion0.0.1/versiondescription这是我用来生成Nuget格式的Templage。/descriptionauthors桂素伟/authorslicense typeexpressionMIT/licensepackageTypespackageType nameTemplate //packageTypes/metadatafilesfile srcGSWNuget\**\*.* excludeGSWNuget\**\bin\**\*.*;GSWNuget\**\obj\**\*.* targetContent //files /package 接下来执行命令 .\nuget.exe pack .\GSWNuget.nuspec -OutputDirectory .\nupkg会在nupkg下生成GSWNuget.1.0.0.nupkg文件安装GSWNuget项目模板 dotnet new -i GSWNuget.1.0.0.nupkg这里在我们的项目模板中会增加一个GSWNuget类型的项目模板。接下来是享受成果的时候了打开vs新建项目搜索GSW就可以新建自己模板的项目了。这里可以测试一下不同的选择生成的是不是想要的结果找时间做一个自己真正项目模板再分享给大家。
http://www.zqtcl.cn/news/801249/

相关文章:

  • 门头沟石家庄网站建设鞍山怎么样做一个自己的网站
  • 网站安装代码宣传网站建设背景
  • 网站空间续费东莞网站建设(信科分公司)
  • 少儿教育网站建设价格网页制作讲解视频
  • 网站开发方向的工作网站怎么做排名
  • 建设网站烧钱iis配置网站是什么
  • 新网站建设特色网站建设信息表
  • 商城做网站家具网站模板
  • 国有企业网站建设网站悬浮qq
  • 上海建站宝盒微网站生成app
  • 做网站是什么时候分页有哪些制作网站的公司
  • 专业柳州网站建设哪家好5千ip的网站能赚多少钱
  • 网站开发代理最火网页游戏
  • 做网站运营工资多少网站建设协议需要注意的问题
  • 如何建设一个人工智能网站qq头像网站源码
  • 有什么网站可以做外贸出口信息泉州网站制作运营商专业
  • 创业seo快速排名优化公司
  • 安丘网站开发王野天 女演员
  • 沈阳软件公司 网站制作wordpress未验证邮箱用户
  • 做动画上传网站赚钱么杭州市网站建设公司
  • 网站建设注意细节问题微信二维码
  • 凡科做的网站提示证书错误网络营销渠道可分为哪几种
  • 南京手机网站制作公司免费设计房屋效果图软件有哪些
  • 定制类网站怎么样做网页设计
  • 企业门户网站建设优势网站登录模版
  • 六盘水建设网站徐州建站平台
  • 昆明有多少做网站的公司公司软文代写
  • 东莞模板网站做一个电子商务网站在哪里做
  • 给别人网站做跳转株洲专业网站排名优化
  • 国外网站空间租用费用网站前端设计图