Генератор исходного кода C#

пытаюсь расширить свой класс Vector2 с помощью генератора кода, сам генератор отображается в анализаторе но внутри пусто и мой файл не генерируется в чем может быть проблема? Настройки проекта генератора

<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"/>
  </ItemGroup>

</Project>

Настройки проекта в котором должен появиться сгенерированный класс

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

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="OpenTK" Version="4.7.1" />
  </ItemGroup>

  <ItemGroup>
    <None Update="ShaderFragment\shader.frag">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="ShaderVertex\shader.vert">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\..\..\SwizzlingVectorGenerator\SwizzlingVectorGenerator\SwizzlingVectorGenerator.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
  </ItemGroup>
</Project>

Сам код генерации

using Microsoft.CodeAnalysis;
using System;
using System.Collections.Generic;

namespace SwizzlingVectorGenerator
{
    [Generator]
    public class VectorGenerator : ISourceGenerator
    {
        public void Execute(GeneratorExecutionContext context)
        {
            // Code generation goes here
            var argsPoints = new List<char>()
            {
                'X','Y','Z','W'
            };
            string codeVector2Props = "";
            for (int i = 0; i < argsPoints.Count; i++)
            {
                codeVector2Props += $@"public T {argsPoints[i]}
                    {{
                        set
                        {{
                            arg{i + 1} = value;
                        }}
                        get
                        {{
                            return arg{i + 1};
                        }}
                    }}";
                for (int j = 0; j < argsPoints.Count; j++)
                {
                    codeVector2Props += $@"public Vector2<T> {argsPoints[i]}{argsPoints[j]}
                    {{
                        set
                        {{
                            arg1 = value.{argsPoints[i]};
                            arg2= value.{argsPoints[j]};
                        }}
                        get
                        {{
                            return new Vector<T>({argsPoints[i]},{argsPoints[j]});
                        }}
                    }}";
                }
                codeVector2Props = $@"
                namespace GameEngineProject.Swizzling
                {{
                    public partial class Vector2<T> where T:new()
                    {{
                        {codeVector2Props}
                    }}
                }}
                ";
                context.AddSource($"Vector2.g.cs", codeVector2Props);
            }
        }

        public void Initialize(GeneratorInitializationContext context)
        {
            // No initialization required for this one
        }
    }
}

Ответы (0 шт):