获取MSBuild中的父目录



在NAnt中,我有一个非常简单的属性来获取我的项目的根,它看起来像这样。:

<property
name="project.root.folder" 
value="${directory::get-parent-directory(directory::get-parent-directory(project.local.folder))}"
/>

这让我找到了我的项目的根源,我从中构建了我的所有道路。

在MSBuild中,我可以使用$(MSBuildProjectDirectory)来获取当前目录,但我希望获取父目录的完整路径。NAnt使用directory::get-parent-directory,这很有魅力,我希望MSBuild中也有类似的功能。

我发现了以前类似的问题(http://stackoverflow.com/questions/514264/msbuild-find-msbuildprojectdirectory-parent-directory)但我想肯定会有更简单的东西!

Sam:)

我假设这是MSBuild 4.0。你可以这样做:

<PropertyGroup>
     <RootFolder>$([System.IO.Path]::GetDirectoryName($(MSBuildProjectDirectory)))</RootFolder>
</PropertyGroup>
<Message Text="RootFolder: '$(RootFolder)'" />

你发布的问题有你的答案,看起来很不错。MSBuild是围绕项目而不是解决方案构建的,因此要找到能为您提供解决方案路径的东西需要一些自定义。需要考虑的一个事实是,对于许多项目,解决方案文件不位于项目树的根(或MSBuild中的"cone")。

MSBuild保留属性

最新更新