.Net框架的模块代码生成器--其一(dotnet new)

小白教程声明,首先先介绍一下.Net 框架及模块是什么情况:

1、公司的大佬会把框架的代码打包成Nuget包放在公司的服务器上

2、公司会专门开一个git仓库,存储模块的代码,每个模块都有其独立的文件夹

3、Visual Studio的Nuget包管理那里会添加自己公司的Nuget包源,保证每个模块使用的都是同一套框架代码

每次产生一个新模块时都要经历这么几个步骤:

1、创建一个新文件夹,里面创建很多项目(一般框架代码都会分层,什么接口层、业务层、数据层这些;每一层对应一个项目,应该大家都是大同小异的吧)

2、要添加每个项目之间的引用,改DbContext之类的各种“配置文件”

3、(这个可能我们公司才有)每个模型还要在每一层那里创建一个文件,这个模型的增删改查逻辑就在这里写

步骤太复杂并且不需要动脑;所以就要把这些工作交给指令--dotnet new 

1、准备一个模块的文件夹作为模板(如图中的App.Meeting),放在一个别的什么文件夹里面都可以,并在同一目录下创建一个名为.template.config的文件夹

 2、进入.template.config文件夹,创建一个template.json文件,文件内容如下,重要的配置项给出了注释,仿照着填吧

{
  "$schema": "http://json.schemastore.org/template",
  "author": "ogurayui",
  "classifications": [ "Template" ],
  "name": "Meeting Template",
  "identity": "Meeting Template", //模板唯一标识
  "groupIdentity": "Meeting Template", 
  "shortName": "MeetingTemplate", //【修改】短名称,使用 dotnet new <shortName> 安装模板时的名称
  "tags": {
    "language": "C#", 
    "type": "project" 
  },
  "sourceName": "Meeting", //【修改】在使用 -n 选项时,会替换模板中项目的名字
  "preferNameDirectory": true
}

3、回到上一级目录,执行指令,创建模板

dotnet new -i MeetingTemplate

 4、使用指令创建新模块代码

-n 是要替换的字符串,替换文件夹内的所有Meeting(无论这个字符串出现在文件名还是文件内容)

-o 表示输出的路径,.表示当前文件夹

dotnet new MeetingTemplate -n %moduleName% -o .

P.S.懒得记指令的还可以写个.bat文件代替,这样每次创建新模块就可以点击这个bat,bat文件内容如下

@echo off
set/p moduleName=请输入对新模块的命名(如Meeting):
echo dotnet new MeetingTemplate -n %moduleName% -o .
dotnet new MeetingTemplate -n %moduleName% -o .
pause

我们解决了1、2步骤,是不是节省了很多工作量呢
★再拓展一点,把整个文件夹打包成Nuget包
1、把刚刚两个文件夹.template.config和App.Meeting放在一个MeetingTemplate文件夹中,MeetingTemplate的文件夹又放在Templates的文件夹中,Templates又放到Template中
也就是那两个文件夹现在在这里

2、去到Template文件夹下,创建Templates.csproj文件,用Notepad++编辑内容如下,标注了“不要改”的最好别改

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <PackageType>Template</PackageType> //不要改
    <PackageVersion>1.0</PackageVersion>
    <PackageId>Templates</PackageId>
    <Title>My Templates</Title>
    <Authors>ogurayui</Authors>
    <Description>Templates to use when creating an module</Description>
    <PackageTags>dotnet-new;templates;contoso</PackageTags>
    <TargetFrameworks>netcoreapp2.1;netstandard2.0</TargetFrameworks> //不要改

    <IncludeContentInPack>true</IncludeContentInPack> //不要改
    <IncludeBuildOutput>false</IncludeBuildOutput> //不要改
    <ContentTargetFolders>content</ContentTargetFolders> //不要改
  </PropertyGroup>

  <ItemGroup>
    <Content Include="Templates\**\*" Exclude="Templates\**\bin\**;Templates\**\obj\**" />
    <Compile Remove="**\*" /> //**和*都不需要改,之前踩了这坑,特地说一下
  </ItemGroup>

</Project>

3、在Template文件夹下使用指令dotnet pack打包

 3、使用指令dotnet new -i <绝对路径> 安装打包好后的模板的.neget,这个指令会把所有Nuget包下所有的模板,如上面说的MeetingTemplate模板


 4、创建模板,和上面的4一样的用法

dotnet new MeetingTemplate -n %moduleName% -o .

下一篇:.Net框架的模块代码生成器--其二(dotnet tool)

猜你喜欢

转载自www.cnblogs.com/ogurayui/p/12102701.html
new
今日推荐