Ошибка RS1035 «Символ запрещен к использованию анализаторами» при использовании метода GeneratorExecutionContext.AddSourC#

Место общения программистов C#
Ответить
Anonymous
 Ошибка RS1035 «Символ запрещен к использованию анализаторами» при использовании метода GeneratorExecutionContext.AddSour

Сообщение Anonymous »

Здесь новичок в генераторах исходного кода Roslyn.
Я следую документации по генераторам исходного кода от Microsoft. Я создал библиотеку классов .NET Standard 2.0 и установил в качестве содержимого файла csproj следующее:

Код: Выделить всё



netstandard2.0


true




all
runtime; build; native; contentfiles; analyzers; buildtransitive





Теперь, основываясь на примере кода в документации, я создаю новый класс с атрибутом [Generator], который соответствует интерфейсу ISourceGenerator:

Код: Выделить всё

[Generator]
public class Sample : ISourceGenerator
{
public void Execute(GeneratorExecutionContext context)
{
}

public void Initialize(GeneratorInitializationContext context)
{
}
}
Но когда я добавляю вызов метода context.AddSource в методе Execute:

Код: Выделить всё

[Generator]
public class Sample : ISourceGenerator
{
public void Execute(GeneratorExecutionContext context)
{
context.AddSource("Foo.g.cs", "public class Bar { }");
}

public void Initialize(GeneratorInitializationContext context)
{
}
}
затем я вижу эту синтаксическую ошибку при вызове метода context.AddSource:

Код: Выделить всё

RS1035 The symbol 'GeneratorExecutionContext' is banned for use by analyzers: Non-incremental source generators should not be used, implement IIncrementalGenerator instead
После синтаксической ошибки я решил реализовать IIncrementalGenerator:

Код: Выделить всё

[Generator]
public class Sample : IIncrementalGenerator
{
public void Execute(GeneratorExecutionContext context)
{
context.AddSource("Foo.g.cs", "public class Bar { }");
}

public void Initialize(IncrementalGeneratorInitializationContext context)
{
}
}
Однако даже в этом случае по-прежнему отображается та же самая ошибка.
Как я могу решить эту проблему?

Подробнее здесь: https://stackoverflow.com/questions/791 ... eneratorex
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»