我开始使用 C# 源代码生成器。
我想要的是启动一个进程并使用当前标签和哈希码作为属性git describe --tags --long
填充一个静态类。GitVersion
问题是,我没有关于引用项目目录的信息,所以我不知道在哪里运行 git 进程。GeneratorExecutionContext
我在函数的参数中找不到任何有用的信息Execute
。
AppDomain.CurrentDomain
指向 csc.exe 进程所以我想没有办法知道它在那里?
我开始使用 C# 源代码生成器。
我想要的是启动一个进程并使用当前标签和哈希码作为属性git describe --tags --long
填充一个静态类。GitVersion
问题是,我没有关于引用项目目录的信息,所以我不知道在哪里运行 git 进程。GeneratorExecutionContext
我在函数的参数中找不到任何有用的信息Execute
。
AppDomain.CurrentDomain
指向 csc.exe 进程所以我想没有办法知道它在那里?
我最终使用:
public void Execute(GeneratorExecutionContext context) {
var mainSyntaxTree = context.Compilation.SyntaxTrees
.First(x => x.HasCompilationUnitRoot);
var directory = Path.GetDirectoryName(mainSyntaxTree.FilePath);
目前,您无法从 中获取参考项目目录GeneratorExecutionContext
,但您可以通过手动指定 的元来传递路径信息.csproj
,然后在生成时检索路径元。