gpt4 book ai didi

msbuild - 在 MSBuild 中获取 NuGet 包文件夹

转载 作者:行者123 更新时间:2023-12-04 01:00:52 25 4
gpt4 key购买 nike

我想调用像 NUnit 这样的可执行工具,我在 MSBuild 中通过 NuGet 管理它:

<Target Name="Test">
<CreateItem Include="$(BuildCompileDirectory)\*.Tests.*dll">
<Output TaskParameter="Include" ItemName="TestAssemblies" />
</CreateItem>
<NUnit
Assemblies="@(TestAssemblies)"
ToolPath="$(PackagesDirectory)\NUnit.2.5.10.11092\tools"
WorkingDirectory="$(BuildCompileDirectory)"
OutputXmlFile="$(BuildDirectory)\$(SolutionName).Tests.xml" />
</Target>

问题是 NuGet 包的文件夹包含包的版本号。例如 nunit-console.exe在文件夹 packages\NUnit.2.5.10.11092\tools 中.如果我更新 NUnit 包,此路径将更改,我必须更新我的 MSBuild 脚本。那是不能接受的。

MSBuild 不允许在目录中使用通配符,因此这不起作用:
ToolPath="$(PackagesDirectory)\NUnit.*\tools"

每当我更新 NuGet 包时,如何调用 MSBuild 中的工具而不必更新我的构建脚本?

最佳答案

您可以使用 MSBuild Transforms获取特定工具的相对目录:

<ItemGroup>
<NunitPackage Include="$(PackagesDirectory)\NUnit.*\tools\nunit-console.exe"/>
</ItemGroup>

<Target Name="Test">
<CreateItem Include="$(BuildCompileDirectory)\*.Tests.*dll">
<Output TaskParameter="Include" ItemName="TestAssemblies" />
</CreateItem>
<NUnit
Assemblies="@(TestAssemblies)"
ToolPath="@(NunitPackage->'%(relativedir)')"
WorkingDirectory="$(BuildCompileDirectory)"
OutputXmlFile="$(BuildDirectory)\$(SolutionName).Tests.xml" />
</Target>

关于msbuild - 在 MSBuild 中获取 NuGet 包文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11705650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com