Выберите один элемент из подстановочного знака ItemGroup в msbuild
Я пытаюсь создать свойство в файле MsBuild, используя ItemGroup
, Свойство должно быть путем к исполняемому файлу, который "восстанавливается" nuget update
команда. Проблема в том, что я не знаю заранее, где файл будет находиться (так как обновление nuget получит последнюю версию), и есть возможность иметь их несколько (очевидно, nuget может забыть удалить старую папку пакета).
Что я пробовал до сих пор это:
<ItemGroup>
<Executable Include="packages\mypackage*\**\myexecutable.exe" />
</ItemGroup>
и он используется как таковой:
<Exec Command="$(Executable) $(MSBuildThisFileDirectory)solutionfile.sln $(MSBuildThisFileDirectory)solutionfile.zip" WorkingDirectory="$(MSBuildThisFileDirectory)" />
Мне нужен подстановочный знак, чтобы найти файл, и все работает нормально, за исключением случаев, когда есть несколько версий, где Executable
пункт становится этим:
packages\mypackage-1.0\myexecutable.exe;packages\mypackage-2.0\myexecutable.exe;
очевидно ItemGroup
находит оба и создает ;
разделенный список. Мне нужен способ исключить все и оставить только один... или даже лучшую идею о том, как добиться того, что мне нужно, с помощью MsBuild (если это возможно, что-то, что не подразумевает создание пользовательской задачи или просто написание отдельного скрипта).
Спасибо!