小白教程声明,首先先介绍一下.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 .