RSCG – SourceGenerator.Helper.CopyCode
| name | SourceGenerator.Helper.CopyCode |
| nuget | https://www.nuget.org/packages/SourceGenerator.Helper.CopyCode/ |
| link | https://github.com/LokiMidgard/SourceGenerator.Helper.CopyCode |
| author | Patrick Kranz |
Transform Code to string
This is how you can use SourceGenerator.Helper.CopyCode .
The code that you start with is
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="SourceGenerator.Helper.CopyCode" Version="0.0.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
<PropertyGroup>
<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
<CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)\GX</CompilerGeneratedFilesOutputPath>
</PropertyGroup>
</Project>
The code that you will use is
Console.WriteLine(SourceGenerator.Helper.CopyCode.Copy.SourceGenerator_Helper_CopyCodeDemoNumberAttribute); Console.WriteLine(SourceGenerator.Helper.CopyCode.Copy.SourceGenerator_Helper_CopyCodeDemoPerson);
namespace SourceGenerator_Helper_CopyCodeDemo;
[SourceGenerator.Helper.CopyCode.Copy]
[System.AttributeUsage(AttributeTargets.All,Inherited = false,AllowMultiple = false)]
internal sealed class NumberAttribute : Attribute
{
public int ID;
}
[SourceGenerator.Helper.CopyCode.Copy]
internal class Person
{
public int Id { get; set; }
}
The code that is generated is
// <auto-generated/>
#nullable enable
namespace SourceGenerator.Helper.CopyCode
{
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("SourceGenerator.Helper.CopyCode","0.0.1.0")]
[global::System.AttributeUsage(global::System.AttributeTargets.Enum | global::System.AttributeTargets.Class | global::System.AttributeTargets.Struct | global::System.AttributeTargets.Interface,AllowMultiple = false)]
internal sealed class CopyAttribute : global::System.Attribute
{
}
}
// <auto-generated/>
#nullable enable
namespace SourceGenerator.Helper.CopyCode;
internal static partial class Copy {
public const string SourceGenerator_Helper_CopyCodeDemoNumberAttribute = """
// <auto-generated/>
#nullable enable
namespace SourceGenerator_Helper_CopyCodeDemo;
[System.AttributeUsage(AttributeTargets.All,Inherited = false,AllowMultiple = false)]
internal sealed class NumberAttribute : Attribute
{
public int ID;
}
""";
}
// <auto-generated/>
#nullable enable
namespace SourceGenerator.Helper.CopyCode;
internal static partial class Copy {
public const string SourceGenerator_Helper_CopyCodeDemoPerson = """
// <auto-generated/>
#nullable enable
namespace SourceGenerator_Helper_CopyCodeDemo;
internal class Person
{
public int Id { get; set; }
}
""";
}
Code and pdf at
https://ignatandrei.github.io/RSCG_Examples/v2/docs/SourceGenerator.Helper.CopyCode
Leave a Reply