我有一個財產GroupProj
存儲完整的路徑名稱。我怎樣才能提取屬性的目錄?如何從屬性中提取目錄?
我有下面的代碼,但預期它不工作:
<PropertyGroup>
<GroupProj>C:\development\project\default.groupproj</GroupProj>
</PropertyGroup>
<Target Name="Default">
<Message Text="Echo: $(GroupProj->'%(RootDir)')" />
</Target>
我將介紹我這樣做的實際意圖。也許有辦法做我不知道的工作。
我有一個Delphi
groupproj(MSBuild項目)文件,C:\development\project\default.groupproj
:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Projects Include="project1.dproj">
<Dependencies/>
</Projects>
<Projects Include="project2.dproj">
<Dependencies/>
</Projects>
<Projects Include="project3.dproj">
<Dependencies/>
</Projects>
</ItemGroup>
...
</Project>
還有其他3個MSBuild
文件(project1.dproj
,project2.dproj
和project3.dproj
)保存在同一文件夾中default.groupproj
。
我創建一個MSBuild
項目文件(C:\ test.targets):
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build" ToolsVersion="3.5">
<Import Project="$(GroupProj)" />
<Target Name="Build">
<MSBuild BuildInParallel="True" Projects="project1.dproj;project2.dproj;project3.dproj"/>
</Target>
</Project>
而作爲執行:
c:\> msbuild /p:GroupProj="C:\development\project\default.groupproj" test.targets
執行應爲MSBuild
失敗找不到projectN.dproj
文件。問題應該是工作目錄未設置爲default.groupproj
。
進入我腦海的一個直接解決方案是提取$(GroupProj)目錄並將concat文件提取到那裏projectN.dproj
文件。
這就是我的問題的全部內容。
儘量只'<消息文本=「回聲:$(GroupProj - >%(RootDir))「/>'。關閉選民,這不是重複的! OP希望在MSBuild中打印出一個['知名的項目'](http://msdn.microsoft.com/en-us/library/ms164313.aspx)'%(RootDir)'。 – TLama 2014-12-03 09:50:02
@TLama謝謝你糾正我。德爾福的標籤讓我感到困惑。我已經刪除它。 – 2014-12-03 10:07:10
@Chau,你究竟會迴應什麼?你可以只爲項目獲得那些衆所周知的元數據(節點''),但是我不清楚你要輸出什麼。請你詳細說明一下嗎? –
TLama
2014-12-03 11:08:33