0

展開プロセスを作り直すにあたり、既存のバッチ ファイルの代わりに MSBuild プロジェクトを使用することにしました。主要な要素はすべて整っており、1 つか 2 つのステップを切り取ろうとしましたが、思わぬ障害に遭遇しました。

CombinePath タスクを使用して OutputPath というプロパティを作成しています。作成後は問題なくアクセスできますが、それをどのように活用すればよいか途方に暮れています。検討:

<CombinePath BasePath ="$(DeployFolderRoot)" Paths ="$(DeployReleaseFolder)$(ReleaseFolderFormatted)" >
  <Output TaskParameter ="CombinedPaths" ItemName ="OutputFolder"/>
</CombinePath>

<MakeDir Directories="@(OutputFolder)" />
<MakeDir Directories="@(OutputFolder)\Foo" />
<MakeDir Directories="@(OutputFolder)\Bar" />

コマンド 2 と 3 は、配列を参照して文字列と連結しようとしているため失敗します。プロパティを作成して @(OutputFolder) を割り当てると、$ アクセサーで参照できるプロパティではなく、単に別のアイテム グループが生成されます。い回避策がありますが、これをいくらか解決したいと思います。

ありがとう、

-ホセ

4

2 に答える 2

3

正確な答えはわかりませんが、ここにアイデアがあります:

<CombinePath BasePath ="$(DeployFolderRoot)" Paths ="$(DeployReleaseFolder)$(ReleaseFolderFormatted)" >
  <Output TaskParameter ="CombinedPaths" ItemName ="OutputFolder"/>
</CombinePath>

<OutputFolder Include="$(DeployFolderRoot)$(DeployReleaseFolder)$(ReleaseFolderFormatted)\Foo" /> 
<OutputFolder Include="$(DeployFolderRoot)$(DeployReleaseFolder)$(ReleaseFolderFormatted)\Bar" />

<MakeDir Directories="@(OutputFolder)" />

基本的に、パスを使用して OutputFolder アイテムを作成すると、リストに追加されます。これは要素内にある必要があり、Include="" を使用する必要があります。

于 2009-07-06T18:55:15.520 に答える
1

ああ!明らかに無知です。Output 要素で間違った属性を使用しました。

<CombinePath BasePath ="$(DeployFolderRoot)" Paths ="$(DeployReleaseFolder)$(ReleaseFolderFormatted)" >
  <Output TaskParameter ="CombinedPaths" PropertyName="OutputFolder"/>
</CombinePath>

<MakeDir Directories="$(OutputFolder)" />
<MakeDir Directories="$(OutputFolder)\Foo" />
<MakeDir Directories="$(OutputFolder)\Bar" />
于 2009-07-06T18:51:16.447 に答える