在MSBuild中获取父目录

时间:2011-06-07 21:46:26

标签: .net msbuild nant

在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),但我认为肯定会有更简单的问题!

山姆:)

2 个答案:

答案 0 :(得分:14)

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

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

答案 1 :(得分:1)

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

MSBuild Reserved Properties