У меня есть решение, содержащее 4 проекта. Один из них — генератор исходного кода Roslyn, другой — библиотека классов, которая использует генератор исходного кода, один — проект тестирования, который также использует генератор исходного кода, а третий — для модульных тестов, которые его не используют. Проект собирается и работает отлично, но в моей IDE появляются закорючки с ошибками для сгенерированного кода. Я пробовал и Visual Studio, и VS Code (даже на совершенно другом компьютере), однако в VS Code есть небольшой временной интервал, пока проект снова открывается, где я могу навести курсор на сгенерированный метод и увидеть его подпись. Генератор исходного кода предназначен для .NET Standard 2.0. Я перезапустил свои редакторы, очистил и пересобрал все, очистил и пересобрал только генератор исходного кода перед открытием IDE, очистил все кеши и перезагрузил компьютер.
Вот файл .csproj. . Кое-что из этого я скопировал из какого-то проекта в Интернете, пытаясь заставить его работать, но это не помогло.
Код: Выделить всё
netstandard2.0
true
true
false
12
true
$(GetTargetPathDependsOn);GetDependencyTargetPaths
Вот как это выглядит без всего остального, что я скопировал. В этой форме это тоже не работает.
Вот как я ссылаюсь на генератор исходного кода в проектах, которым он нужен:
Исходный код генератора:
Код: Выделить всё
[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