我正在尝试在 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 实现我需要的东西(如果可能的话,这并不意味着创建自定义任务或只是编写单独的脚本)。
谢谢!