admin管理员组文章数量:1794759
C#代码生成器
引言
引言:随着 Core 的不断发展,它也是一个成熟的平台了,鲁迅说过:成熟的平台就要学会自己写代码,那么今天我就在这里教大家如何让 Core学会自己写代码。
提示:如果只是向往,远方依旧还是远方!
文章目录- 引言
- 前言
- 一、代码生成器能干嘛?
- 二、如何创建代码生成器项目呢?
- 1.创建一个 Core的控制台项目
- 创建完成后我们就得到了以下画面
- 2.创建代码生成器
- 给代码生成器命名
- 创建代码生成类
- 引入需要的包
- 配置包
- 三、在引入项目
- 配置项目引用
- 总结
前言
温馨提示:以下内容纯属瞎编
鲁迅说过:成熟的平台就要学会自己写代码
孩子你还在每天写着重复的代码吗?还在做着重复的增删改查吗?out啦,今天不要998!不要888!免费白嫖带回家。
友情提示:以下是本篇文章正文内容,下面案例可供参考
一、代码生成器能干嘛?1、减少工作量,提高工作效率 2、可以把开发周期缩短,把省出来的时间拿来摸鱼它不香吗? 3、可以在菜鸟面前装逼。
二、如何创建代码生成器项目呢? 1.创建一个 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就是代码生成器操作后的代码
总结
提示:这里对文章进行总结:
这里只是展示了基本的用法,运营场景很多。需要只要合理的运用就能给你带来极大的收获。让你拥有更多的摸鱼时间
本文标签: 代码生成器
版权声明:本文标题:C#代码生成器 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1687009646a128283.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论