Dan*_*iel 7 msbuild visual-studio azure-devops
从 Visual Studio 运行时,MSBuild 被赋予$(SolutionDir)宏/属性。从 Azure DevOps 运行时,此属性不存在(理所当然)。
Azure DevOps 具有Build.SourceBranch可以作为属性传递给 MsBuild 的变量。这个变量更好,因为它直接指向存储库根目录,而$(SolutionDir)如果解决方案不在根目录中,则可能指向子目录。
我是否可以在 Visual Studio 和 Azure DevOps 中使用一致的 MsBuild 属性,该属性可以指向存储库根?
实现此目的的一种方法是Directory.Build.props在存储库根目录中有一个文件并指定一个属性<RepositoryRoot>$(MSBuildThisFileDirectory)</RepositoryRoot>,但是我有一个限制阻止我这样做。
简短的回答:不,MSBuild 中没有对源代码控制系统的默认理解。
这Directory.Build.props文件可能是最可靠的方法,无论构建解决方案还是单个项目都会显示,因为无论您使用或迁移到哪个 VCS 系统,它都保持不变。
其他方法需要对 VCS 结构进行硬编码,例如查找包含文件的目录.gitignore(如果不使用此类文件,则该目录将不起作用):
<PropertyGroup>
<RepoRoot>$([System.IO.Path]::GetDirectoryName($([MSBuild]::GetPathOfFileAbove('.gitignore', '$(MSBuildThisFileDirectory)'))))</RepoRoot>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2196 次 |
| 最近记录: |