Quiero llamar herramientas ejecutables como NUnit que dirijo a través NuGet en MSBuild:Obtener carpeta del paquete NuGet en MSBuild
<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>
El problema es que la carpeta de un paquetes NuGet es que contiene el número de versión del paquete . Por ejemplo, nunit-console.exe
se encuentra en la carpeta packages\NUnit.2.5.10.11092\tools
. Si actualizo el paquete NUnit, esta ruta cambiará y tendré que actualizar mi script MSBuild. Eso no es aceptable
MSBuild no permite comodines en directorios, así que esto no está funcionando:
ToolPath="$(PackagesDirectory)\NUnit.*\tools"
¿Cómo puedo llamar herramientas de MSBuild sin tener que actualizar mi script de construcción cada vez que puedo actualizar un paquete NuGet?
Es "$ (PackagesDirectory)" un elemento que usted define a sí mismo? –
@DavidTchepak Sí, lo es. –
¿Qué sucede si la solución es grande y contiene varias versiones del mismo paquete (utilizado por diferentes proyectos)? En ese caso, puede hacer referencia a la versión incorrecta (es decir, no la especificada en el archivo "packages.config" de su proyecto). – johnnyjob