从msbuild中的通配符ItemGroup中选择单个项目

时间:2017-11-21 15:57:20

标签: msbuild msbuild-itemgroup

我正在尝试使用ItemGroup在MsBuild文件中创建属性。该属性需要是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 个答案:

没有答案
相关问题