voglio chiamare strumenti eseguibili come NUnit che gestisco tramite NuGet in MSBuild:Get cartella del pacchetto NuGet in 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>
Il problema è che la cartella di un pacchetti Nuget è che contiene il numero di versione del pacchetto . Ad esempio, nunit-console.exe
si trova nella cartella packages\NUnit.2.5.10.11092\tools
. Se aggiorno il pacchetto NUnit questo percorso cambierà e devo aggiornare il mio script MSBuild. Questo non è accettabile.
MSBuild non consente caratteri jolly nelle directory, quindi questo non sta funzionando:
ToolPath="$(PackagesDirectory)\NUnit.*\tools"
Come posso chiamare strumenti in MSBuild senza dover aggiornare il mio script di build ogni volta che aggiorno un pacchetto NuGet?
Is "$ (PackagesDirectory)" un elemento che hai definito te stesso? –
@DavidTchepak Sì, lo è. –
Cosa succede se la soluzione è grande e contiene più versioni dello stesso pacchetto (utilizzato da diversi progetti)? In tal caso, puoi fare riferimento alla versione errata (ad esempio, non quella specificata nel file "packages.config" del tuo progetto. – johnnyjob