Dot-Net

在 MSBuild 中獲取父目錄

  • January 16, 2019

在 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),但我認為肯定有更簡單的東西可用!

自己:)

我假設這是 MSBuild 4.0。你可以這樣做:

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

你發布的問題有你的答案,它看起來是一個不錯的答案。MSBuild 是圍繞項目而不是解決方案建構的,因此找到可以為您提供解決方案路徑的東西需要進行一些自定義。需要考慮的一個事實是,對於許多項目,解決方案文件並不位於項目樹的根目錄(或 MSBuild 用語中的“圓錐”)。

MSBuild 保留屬性

引用自:https://stackoverflow.com/questions/6271991