Генераторы источников Получить путь проекта ссылки - получить полезное значение от IngrementalValueProvider C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Генераторы источников Получить путь проекта ссылки - получить полезное значение от IngrementalValueProvider

Сообщение Anonymous »

Чтобы выполнить некоторую логику с помощью генератора источника в некоторых файлах (более точно файлы изображений) на основе структуры папок целевого/ссылочного проекта, мне нужно получить путь/каталог целевого/ссылочного проекта.

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

namespace SourceGen
{
[Generator]
public class Class1 : IIncrementalGenerator
{
public void Initialize(IncrementalGeneratorInitializationContext context)
{
var projDirectory = context.AnalyzerConfigOptionsProvider
.Select((x, _) => x.GlobalOptions
.TryGetValue("build_property.MSBuildProjectDirectory", out var projectDirectory) ? projectDirectory : null);

File.AppendAllText("\\" + "log.txt", projDirectory );
}
}
}
Я вхожу в систему в файл для целей отладки (чтобы проверить значение свойства, которое я читаю в этом случае), поскольку я не могу найти другой способ отладки такого рода проекта. />
microsoft.codeanalysis.incrementalvalueprovider`1nsystem.string=/p>образной

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

var mainSyntaxTree = context.CompilationProvider.Select((x, _) => x.SyntaxTrees.First(x => x.HasCompilationUnitRoot));
var directory = Path.GetDirectoryName(mainSyntaxTree.Select((x, _) => x.FilePath);
То же самое patch.getDirectoryName () жалуется, что предоставленный параметр имеет тип ingrementalValuepRovider , ожидая строки .
Не уверен, как я могу получить полезное строковое значение (

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

FilePath
) из типа urcemmentalValueProvider .
третий подход
На этот раз файл журнала не был записан/вообще не создан:

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

var provider = context.AnalyzerConfigOptionsProvider.Select((x, _) =>
{
x.GlobalOptions.TryGetValue("build_property.MSBuildProjectDirectory", out var projectDirectory);
File.AppendAllText("\\" + "log.txt", "testing" + projectDirectory);
return projectDirectory;
});
Docs: https://github.com/dotnet/roslyn/blob/m ... .mdобразно>

Подробнее здесь: https://stackoverflow.com/questions/782 ... value-from
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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