Intellisense не видит исходный код, созданный локальным генератором исходного кода C#C#

Место общения программистов C#
Ответить
Anonymous
 Intellisense не видит исходный код, созданный локальным генератором исходного кода C#

Сообщение Anonymous »

У меня есть решение, содержащее 4 проекта. Один из них — генератор исходного кода Roslyn, другой — библиотека классов, которая использует генератор исходного кода, один — проект тестирования, который также использует генератор исходного кода, а третий — для модульных тестов, которые его не используют. Проект собирается и работает отлично, но в моей IDE появляются закорючки с ошибками для сгенерированного кода. Я пробовал и Visual Studio, и VS Code (даже на совершенно другом компьютере), однако в VS Code есть небольшой временной интервал, пока проект снова открывается, где я могу навести курсор на сгенерированный метод и увидеть его подпись. Генератор исходного кода предназначен для .NET Standard 2.0. Я перезапустил свои редакторы, очистил и пересобрал все, очистил и пересобрал только генератор исходного кода перед открытием IDE, очистил все кеши и перезагрузил компьютер.
Вот файл .csproj. . Кое-что из этого я скопировал из какого-то проекта в Интернете, пытаясь заставить его работать, но это не помогло.

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



netstandard2.0
true
true
false
12
true











$(GetTargetPathDependsOn);GetDependencyTargetPaths









Вот как это выглядит без всего остального, что я скопировал. В этой форме это тоже не работает.

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



netstandard2.0
true











Вот как я ссылаюсь на генератор исходного кода в проектах, которым он нужен: Исходный код генератора:

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

    [Generator]
public class ProjectGenerator : ISourceGenerator
{
private readonly SyntaxReceiver Projects = new DerivedClassesReceiver("Project");

public void Execute(GeneratorExecutionContext context)
{
if (!(context.SyntaxContextReceiver is SyntaxReceiver)) return;

foreach (var i in Projects.Classes)
{
ProcessClass(context, i);
}
}

public void ProcessClass(GeneratorExecutionContext context, INamedTypeSymbol symbol)
{
// Unimportant
}

public void Initialize(GeneratorInitializationContext context)
{
context.RegisterForSyntaxNotifications(() => Projects);
}
}
Вот полный исходный код, если вы хотите его посмотреть.


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

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

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

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

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

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