Выберите один элемент из подстановочного знака 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 (если это возможно, что-то, что не подразумевает создание пользовательской задачи или просто написание отдельного скрипта).

Спасибо!

0 ответов

Другие вопросы по тегам