Unten ist ein Teil einer MSBuild-Datei, die ich arbeite:Warum werden in MSBuild keine Elementmetadaten innerhalb einer Eigenschaft aufgelöst?
<ItemGroup>
<Tests Include="$(SolutionDir)\**\bin\$(TestPlatform)\$(Configuration)\*.Tests.dll" />
</ItemGroup>
<PropertyGroup>
<TestProperties>/testcontainer:%(Tests.FullPath)</TestProperties>
</PropertyGroup>
Ich möchte eine Eigenschaft haben, die einen Schalter Befehlszeile hält. Wenn ich jedoch versuche, $(TestProperties)
in einem Exec Befehl Zeichenfolge zu verwenden, wird %(Tests.FullPath)
nie in den absoluten Pfad des Elements Tests aufgelöst. Stattdessen wird es immer wörtlich verarbeitet, wie "%(Tests.FullPath)"
.
Mache ich etwas falsch oder ist dies ein Standard MSBuild Verhalten? Wenn letzteres, gibt es eine Möglichkeit für mich, um dieses Problem zu umgehen?
Danke
P.S. - Ich weiß, dass ich wahrscheinlich nicht auf die FullPath-Eigenschaft zugreifen muss, da mein Include-Wert ein absoluter Pfad ist. Trotzdem würde ich gerne das Problem verstehen und wissen, wie ich damit umgehen soll.
Außer dies funktioniert auch nicht: „Item-Listen kann nicht mit anderen Strings verkettet werden, wo eine Positionsliste wird voraussichtlich ein Semikolon verwenden, um mehrere Stücklisten zu trennen..“ –
Ich habe keine Ahnung wovon du sprichst. Dadurch werden Elementmetadaten wie das angeforderte OP aufgelöst. –
Es tut, aber nur wenn innerhalb eines Ziels verwendet. Außerhalb eines Ziels erzeugt es den Fehler, den ich gepostet habe. –