При использовании генератора исходных текстов C#9, как обеспечить, чтобы файлы создавались в определенном месте/пути к файлу?

#c# #.net-5 #asp.net5 #sourcegenerators #csharp-source-generator

Вопрос:

Я работаю над проектом, использующим генератор исходных текстов C# 9, но при создании кода я хочу, чтобы разные файлы сгенерированного кода отправлялись в определенные пути/местоположения файлов в рамках существующего проекта, в котором создается код.

Возможно ли это? Я знаю, что могу указать папку, в которую они все помещены, используя:

<CompilerGeneratedFilesOutputPath>Generated</CompilerGeneratedFilesOutputPath>

и изменив «Сгенерированный» на папку, в которой я хочу, чтобы сгенерированные файлы находились внутри. Так что, например, если у меня уже есть папка «Модели», я понимаю, что изменил бы «Сгенерированные» на «Модели», а затем поместил бы ее туда.

Однако, как только он окажется внутри этого пути к файлу, он помещается в папку с именем имени проекта исходного генератора, а затем в другую папку с пространством имен.generatorclassname.

Так что в данном случае то, что у меня происходит, — это:

  • «Сгенерировано» — это указанный путь к папке в проекте, в котором создаются файлы
  • «SourceGenerator» — это название проекта, в котором размещен фактический генератор
  • «Генератор» — это имя класса, который на самом деле является законным генератором
  • Файлы «CustomerTest» — это фактические создаваемые файлы

Вот скриншот описанного выше сценария, который у меня сейчас происходит: Скриншот сгенерированной структуры папок

Однако что, если я хочу, чтобы каждый из этих файлов был сгенерирован в другом месте в уже существующей структуре папок целевого проекта? Возможно ли это? Есть какие-нибудь идеи?

Комментарии:

1. Нет. У вас даже нет контроля над именем файла файла (вы можете дать подсказку, но Рослин может игнорировать ее, если захочет).