在MSBuild中获取NuGet包文件夹
我想调用NUnit之类的可执行工具,我在MSBuild中通过NuGet管理这些工具:在MSBuild中获取NuGet包文件夹,msbuild,build-automation,nuget,nuget-package,Msbuild,Build Automation,Nuget,Nuget Package,我想调用NUnit之类的可执行工具,我在MSBuild中通过NuGet管理这些工具: <Target Name="Test"> <CreateItem Include="$(BuildCompileDirectory)\*.Tests.*dll"> <Output TaskParameter="Include" ItemName="TestAssemblies" /> </CreateItem> <NUnit As
<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>
如何在MSBuild中调用工具,而不必在更新NuGet软件包时更新生成脚本?您可以使用来获取特定工具的相对目录:
<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>
“$(PackagesDirectory)”是您自己定义的项目吗?@DavidTchepak是的。如果解决方案很大,并且包含同一软件包的多个版本(由不同的项目使用),该怎么办?在这种情况下,您可能引用了错误的版本(即不是在项目的“packages.config”文件中指定的版本)。在MsBuild 15中,您可以使用PackageReference
和GeneratePathProperty=“true”
。请参阅。
<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>