1

我开始使用 C# 源代码生成器。

我想要的是启动一个进程并使用当前标签和哈希码作为属性git describe --tags --long填充一个静态类。GitVersion

问题是,我没有关于引用项目目录的信息,所以我不知道在哪里运行 git 进程。GeneratorExecutionContext我在函数的参数中找不到任何有用的信息Execute

AppDomain.CurrentDomain指向 csc.exe 进程所以我想没有办法知道它在那里?

4

2 回答 2

4

我最终使用:

public void Execute(GeneratorExecutionContext context) {
     var mainSyntaxTree = context.Compilation.SyntaxTrees
                          .First(x => x.HasCompilationUnitRoot);

     var directory = Path.GetDirectoryName(mainSyntaxTree.FilePath);
于 2021-03-09T13:53:15.283 回答
1

目前,您无法从 中获取参考项目目录GeneratorExecutionContext,但您可以通过手动指定 的元来传递路径信息.csproj,然后在生成时检索路径元。

于 2020-12-01T15:51:07.750 回答