0

基本のTaskクラスから継承してカスタムMSBuildタスクを開発しています。Microsoft.Build.Tasks.dll私のタスクは、プロセスでDestinationFolderプロパティを設定する際に宣言されたコピータスクを呼び出します。私のカスタムタスクには、次のように宣言されたDestinationFolderというプロパティがあります

public ITaskItem DestinationFolder { get; set; }

ビルド/プロジェクトファイルからこのタスクを呼び出すとき、次のようなパラメータを渡すことがあります

<MyTask DestinationFolder="C:\Development\Test\%(RecursiveDir)"

私が抱えている問題は、このタスクを実行すると、DestinationFolderプロパティが%(RecursiveDir)ビットを認識していないように見え、代わりにに設定されているように見えることC:\Development\Test\Binです。

この質問は、この問題の回避策がないことを示唆しているようです。これは間違いなく当てはまりますか?プロパティを単純な文字列として宣言してからその場でTaskItemオブジェクトを作成することが可能かどうか、またDestinationFolder文字列に%(RecursiveDir)それに応じてTaskItemオブジェクトを設定するための特別な命令が含まれるかどうか疑問に思いました。

4

1 に答える 1

0

リンクされた質問は、タスクからの出力パラメーターを扱います。この質問は入力を扱います。ここでの問題は、DestinationFolder を ITaskItem として宣言したにもかかわらず、文字列を渡していることです。

あなたが何をしようとしているのかを正確に把握するのに十分な例を示していませんが、「C:\Development\Test\Bin\SomeFile.txt」というファイルがあると仮定すると、アイテムを定義できますあなたのプロジェクトで次のように:

<ItemGroup>
    <DestinationFolderArgument Include="C:\Development\Test\**\SomeFile.txt" />
</ItemGroup>
<MyTask DestinationFolder="@(DestinationFolderArgument)" />

これで、タスクはアイテムのすべてのメタデータにアクセスできるようになり、RecursiveDir には "Bin\" が含まれます。

于 2010-07-31T21:00:18.577 に答える