2

以下は、私が取り組んでいるMSBuildファイルの一部です。

<ItemGroup>
  <Tests Include="$(SolutionDir)\**\bin\$(TestPlatform)\$(Configuration)\*.Tests.dll" />
</ItemGroup>

<PropertyGroup>
  <TestProperties>/testcontainer:%(Tests.FullPath)</TestProperties>
</PropertyGroup>

コマンド ライン スイッチを保持するプロパティが必要です。ただし、Exec Command 文字列で使用しようとする$(TestProperties) Tests%(Tests.FullPath)アイテムの絶対パスに解決されません。代わりに、常に文字どおりに処理され"%(Tests.FullPath)"ます。

私は何か間違ったことをしていますか、それともこれは標準のMSBuildの動作ですか? 後者の場合、これを回避する方法はありますか?

ありがとう

PS - 私の Include 値は絶対パスであるため、おそらく FullPath プロパティにアクセスする必要はないと思います。ただし、問題の処理方法とともに、問題を理解したいと思います。

4

1 に答える 1

7

構文エラーがあります。アイテムリストは@文字で参照され、アイテムメタデータは%で参照されます。詳細については、MSBuild特殊文字リファレンスを参照してください。よく知られているアイテムのメタデータにアクセスするには、プロパティ自体の内部に変換を適用する必要があります。

<ItemGroup>
  <Tests Include="MyFile.txt" />
</ItemGroup>

<PropertyGroup>
  <TestProperties>/testcontainer:@(Tests->'%(FullPath)')</TestProperties>
</PropertyGroup>

あなたはここでより多くの助けを見つけることができます

于 2012-04-14T05:06:05.833 に答える