有没有办法在 MSBuild 或 Visual Studio 中引用根开发文件夹?

Is there a way to reference the root development folder in MSBuild or Visual Studio?

Visual Studio 为 $SolutionDir 和 $ProjectDir 之类的东西提供了很棒的宏(变量的糟糕名称),但我找不到任何指向我的根开发文件夹的东西。我知道在某些情况下这是一个模糊的概念,但如果有一种方法可以引用我的根 .git 结帐文件夹肯定会有所帮助,这样我就不必使用相对路径,当事情四处移动时会中断.有没有人知道在 Visual Studio 中推导出这个的方法我可能会丢失?我可以为它编写一个扩展,但理想情况下我想要一种在 Visual Studio 和 MSBuild(用于 Azure DevOps)中工作的方法,所以我不必开发两个解决方案。

你可以使用 property functions:

做这样的事情
<PropertyGroup>
    ​<ProjectRootDir>$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), '.git/index'))</ProjectRootDir>
​</PropertyGroup>

只要文件夹结构中只有 .git\index 一次(在您定义的“最高”级别)。