0

msbuildとmsbuildコミュニティタスクを使用して仮想ディレクトリをセットアップしようとしていますが、の外部にある相対パスを指定する方法が見つかりません$(MSBuildStartupDirectory)

私のプロジェクトは次のように構成されています。

c:\ proj \
  src \
    ウェブサイト(これは仮想ディレクトリが指す必要がある場所です)
  建てる\
    build.proj(これはmsbuildファイルです)

私がやりたいことは次のようなものです(それはを$(MSBuildStartupDirectory)指していることに注意してくださいc:\proj\build):

<WebDirectoryCreate
  VirtualDirectoryName="website"
  VirtualDirectoryPhysicalPath="$(MSBuildStartupDirectory)\..\src\website" />

残念ながら、これは機能しません。「..」は解決されず、仮想ディレクトリは。を指しc:\proj\build\..\src\websiteます。

誰かがmsbuildで(相対)パスを操作する方法のヒントを教えてもらえますか?

4

1 に答える 1

3

私はそれを試してみましたが、うまくいきました。msbuild 4.0 とコミュニティ タスク バージョン 1.3.0.504 を使用して、Windows XP でこれをテストしました。

msbuild の実行方法によっては MSBuildStartupDirectory が別の場所を指している可能性があるため、通常は MSBuildProjectDirectory を使用します。

次の例では、Web サイトを作成し、FullPath メタデータを使用してパスから .. エントリを削除します。

<ItemGroup>
    <WebPath Include="$(MSBuildProjectDirectory)\..\src\website" />
</ItemGroup>
<Target Name="CreateWeb">
    <Message Text="WebPath=@(WebPath)" Importance="high" />
    <Message Text="FullPath=%(WebPath.FullPath)" Importance="high" />
    <WebDirectoryCreate
        VirtualDirectoryName="website"
        VirtualDirectoryPhysicalPath="%(WebPath.FullPath)" />
</Target>
于 2011-01-04T15:17:06.590 に答える