(パスに解決「...」)最初の部分にまで低減したいです比較的簡単ですが、property functionsを使用してこれを行うことができます:
<PropertyGroup>
<Folder>c:\workdir\project\wonder\subproj\..\..\common</Folder>
</PropertyGroup>
<Message Text="Folder $(Folder)" />
<Message Text="Shortened path $([System.IO.Path]::GetFullPath($(Folder)))" />
出力:
Folder c:\workdir\project\wonder\subproj\..\..\common
Shortened path c:\workdir\project\common
第二部 - 比較的に別の経路を短くするには - 魔法の関数Uri.MakeRelativeUri()
の使用を必要としinline task(または外部タスク・ライブラリー)の内部にそれを包みます。あなたのタスクを宣言します。
<PropertyGroup>
<Folder>c:\workdir\project\wonder\subproj\..\..\common</Folder>
<WorkingDir>c:\workdir\project\wonder</WorkingDir>
</PropertyGroup>
<Message Text="Folder $(Folder)" />
<Message Text="Base directory $(WorkingDir)" />
<RelativePath Target="$(Folder)" BaseDirectory="$(WorkingDir)">
<Output PropertyName="Relative" TaskParameter="Result"/>
</RelativePath>
<Message Text="Relative path $(Relative)" />
出力:
Folder c:\workdir\project\wonder\subproj\..\..\common
Base directory c:\workdir\project\wonder
Relative path ..\common
カスタム 'UsingTask'スクリプトでこれを行うことができます。http:// MSDNを以下のように
そして、それを使用しています。 microsoft.com/en-us/library/t41tzex2.aspxと少しのC#。 – skolima