Virgülle ayrılmış öğe listesi görüntüleme
Microsoft Build Engine'de (MSBuild) öğe listeleriyle çalışırken, bazen bu öğe listelerinin içeriğini kolayca okunabilecek şekilde görüntülemek yararlı olabilir. İsterseniz, özel ayırıcı dizeyle ayrılmış öğelerin listesini alan bir göreviniz de olabilir. Bu iki durumda da, öğe listesi için bir ayırıcı dize belirtebilirsiniz.
Listedeki öğeleri virgülle ayırma
VARSAYıLAN olarak, MSBuild listedeki öğeleri ayırmak için noktalı virgül kullanır. Örneğin, aşağıdaki değere sahip bir Message
öğeyi göz önünde bulundurun:
<Message Text="This is my list of TXT files: @(TXTFile)"/>
@(TXTFile)
Öğe listesi App1.txt, App2.txt ve App3.txt öğelerini içerdiğinde ileti şu şekildedir:
This is my list of TXT files: App1.txt;App2.txt;App3.txt
Varsayılan davranışı değiştirmek istiyorsanız, kendi ayırıcınızı belirtebilirsiniz. Öğe listesi ayırıcısı belirtmek için söz dizimi şöyledir:
@(ItemListName, '<separator>')
Ayırıcı tek bir karakter veya dize olabilir ve tek tırnak içine alınmalıdır.
Öğeler arasına virgül ve boşluk eklemek için
Aşağıdakine benzer öğe gösterimini kullanın:
@(TXTFile, ', ')
Örnek
Bu örnekte Exec görevi, phrases.txt dosyasında belirtilen metin dizelerini bulmak için findstr aracını çalıştırır. Findstr komutunda değişmez değer arama dizeleri /c: anahtarıyla gösterilir, bu nedenle öğe ayırıcısı öğe /c:
listesindeki öğeler @(Phrase)
arasına eklenir.
Bu örnekte, eşdeğer komut satırı komutu şu şekildedir:
findstr /i /c:hello /c:world /c:msbuild phrases.txt
<Project DefaultTargets = "Find"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
<ItemGroup>
<Phrase Include="hello"/>
<Phrase Include="world"/>
<Phrase Include="msbuild"/>
</ItemGroup>
<Target Name = "Find">
<!-- Find some strings in a file -->
<Exec Command="findstr /i /c:@(Phrase, ' /c:') phrases.txt"/>
</Target>
</Project>