引言
引言:随着.net Core 的不断发展,它也是一个成熟的平台了,鲁迅说过:成熟的平台就要学会自己写代码,那么今天我就在这里教大家如何让.net Core学会自己写代码。
提示:如果只是向往,远方依旧还是远方!
文章目录
- 引言
- 前言
- 一、代码生成器能干嘛?
- 二、如何创建代码生成器项目呢?
- 1.创建一个.net Core的控制台项目
- 创建完成后我们就得到了以下画面
- 2.创建代码生成器
- 给代码生成器命名
- 创建代码生成类
- 引入需要的包
- 配置包
- 三、在引入项目
- 配置项目引用
- 总结
前言
温馨提示:以下内容纯属瞎编
鲁迅说过:成熟的平台就要学会自己写代码
孩子你还在每天写着重复的代码吗?还在做着重复的增删改查吗?out啦,今天不要998!不要888!免费白嫖带回家。
友情提示:以下是本篇文章正文内容,下面案例可供参考
一、代码生成器能干嘛?
1、减少工作量,提高工作效率
2、可以把开发周期缩短,把省出来的时间拿来摸鱼它不香吗?
3、可以在菜鸟面前装逼。
二、如何创建代码生成器项目呢?
1.创建一个.net Core的控制台项目
注意:这里是用的.Net 6.0
创建完成后我们就得到了以下画面
把下面这断代码复制进去:
namespace Test;
//注意这里的Program是用的部分类。这是为了使生成代码和这里的代码进行合并
partial class Program
{static void Main(string[] args){HelloFrom("Generated Code");}static partial void HelloFrom(string name);
}
2.创建代码生成器
注意:这里选择的是 .NET Standard 的类库
给代码生成器命名
这里我是随便写的名字,在实际开发中肯定不能这样写
注意:目前代码生成器只支持 .NET Standard 2.0 ,如果选错了将会不支持该服务
创建代码生成类
然后将下面的代码复制进去:
using Microsoft.CodeAnalysis;namespace SourceGenerator
{[Generator]public class HelloSourceGenerator : ISourceGenerator{//在进行代码分析的时候会执行这里的代码public void Execute(GeneratorExecutionContext context){//代码生成执行此方法// 找到主方法,拿到编译环境var mainMethod = context.Compilation.GetEntryPoint(context.CancellationToken);// 建立源代码//mainMethod.ContainingNamespace.ToDisplayString()会取到main方法的命名空间也就是test//mainMethod.ContainingType.Name会取到main方法所在的类名称也就是program//注意下面代码种的partial,这里用的是部分类string source = $@"// <auto-generated/>
using System;namespace {mainMethod.ContainingNamespace.ToDisplayString()}
{{public static partial class {mainMethod.ContainingType.Name}{{static partial void HelloFrom(string name) =>Console.WriteLine($""Generator says: Hi from '{{name}}'"");}}
}}
";var typeName = mainMethod.ContainingType.Name;// 添加源代码进行编译context.AddSource($"{typeName}.g.cs", source);}//初始化时执行此段代码public void Initialize(GeneratorInitializationContext context){// No initialization required for this one}}
}
引入需要的包
Microsoft.CodeAnalysis.Analyzers 和 Microsoft.CodeAnalysis.CSharp
配置包
代码如下
<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><TargetFramework>netstandard2.0</TargetFramework></PropertyGroup><ItemGroup><PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="3.3.3"><PrivateAssets>all</PrivateAssets><IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets></PackageReference><PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.0.1" PrivateAssets="all" /></ItemGroup></Project>
三、在引入项目
配置项目引用
代码如下
<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><OutputType>Exe</OutputType><TargetFramework>net6.0</TargetFramework><ImplicitUsings>enable</ImplicitUsings><Nullable>enable</Nullable></PropertyGroup><ItemGroup><PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="3.3.3"><PrivateAssets>all</PrivateAssets><IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets></PackageReference><PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.2.0" /></ItemGroup><ItemGroup><ProjectReference Include="..\PathTo\PathTo.csproj" OutputItemType="Analyzer"ReferenceOutputAssembly="false" /></ItemGroup></Project>
到这里差不错就结束了
直接把项目跑起来就能看到项目生成的代码了
这里的 Program就是代码生成器操作后的代码
总结
提示:这里对文章进行总结:
这里只是展示了基本的用法,运营场景很多。需要只要合理的运用就能给你带来极大的收获。让你拥有更多的摸鱼时间