2017-04-03 2 views
1

Ich habe einen neuen Build-Schritt in TFS 2017 hinzugefügt, um meine DLL in eine nuspec zu packen (NuGet Packager). Mein Problem ist, dass ich den Zielordner nicht einrichten kann.Wie wird der Zielordner des TFS NuGet Packagers festgelegt?

Die Beschreibung des "Package Folder" ist

Ordner, in dem Pakete erstellt werden. Wenn leer, werden die Pakete zusammen mit der Datei csproj oder nuspec erstellt.

enter image description here

Als ich dieses Feld leer verlassen Ich erwarte, dass es in "$/MyProject/Common /" wie beschrieben in den Informationen erstellt werden. Aber es wird weiterhin im Stammordner des Builder-Agenten erstellt. und fügt "-OutputDirectory" C: _work \ 24 \ s "" hinzu, auch wenn ich einen anderen Ordner im Paketordner schreibe.

Was mache ich hier? Gibt es eine bessere Möglichkeit, Nuget für jede in TFS erstellte Version zu packen und zu veröffentlichen?

NuGet Packager Log:

2017-04-02T15:01:51.3457383Z Set workingFolder to default: C:\agent\tasks\NuGetPackager\0.1.72 
2017-04-02T15:01:51.3769893Z Executing the powershell script: C:\agent\tasks\NuGetPackager\0.1.72\NuGetPackager.ps1 
2017-04-02T15:01:51.6426327Z C:\agent\agent\worker\tools\NuGet.exe pack "C:\_work\24\s\Common\Common.nuspec" -OutputDirectory "C:\_work\24\s" -version 1.0.17092.08 
2017-04-02T15:01:52.0332823Z Attempting to build package from 'Common.nuspec'. 
2017-04-02T15:01:52.1895494Z Successfully created package 'C:\_work\24\s\Common.1.0.17092.08.nupkg'. 

Antwort

2

einfach den Ordner, in dem Sie die Pakete setzen wollen.

Package Folder

den Ordner an, in dem Sie die Pakete setzen wollen. Sie können eine Variable wie $(Build.StagingDirectory)\packages

enter image description here


aktualisieren

verwenden, wenn Sie den Ordner leer lassen, es wird automatisch AddParameter von outputdir = Builder Agent Stammordner. Wenn Sie $/MyProject/Common eingeben, wird es den Ordner Basis auf builder agent root folder/$/MyProject/Common

enter image description here

Nach dem Powershell-Skript erstellen sich an C:\agent\tasks\NuGetPackager\xxx\NuGetPackager.ps1

$argsPack = "pack `"$fileToPackage`" -OutputDirectory `"$outputdir`" -Properties $buildProps"; 

So wird es auf jeden Fall in der Agenten-Stammordner setzen. Zurück zur Beschreibung:

Wenn Sie es leer lassen, wird das Paket in dem gleichen Verzeichnis erstellt werden, der die CSPROJ oder .nuspec-Datei enthält.

Nicht sicher selben Verzeichnis Mittel die gleichen Ordnerebene oder nicht. Die neben scheint jedoch die gleiche Ordner-Ebene bedeuten.

Sie könnten entweder in GITHub-VSTS Tasks oder Develop Community-Team Services einen Fehler einreichen, beide erhalten eine schnelle Antwort vom TFS-Entwicklungsteam.

+0

Schließlich habe ich es geschafft, den Paketordnerpfad direkt mit einem Serverpfad wie $/MyProject/Common zu verwenden. Aber das Problem ist, wenn ich es leer lasse es immer im Stammordner des Agenten abgelegt. Zum Beispiel ist mein der Weg zum Nuspec, den Paketordnerpfad direkt mit einem Serverpfad wie $/MyProject/Common/dir_a/dir_b/mynu.nuspec zu verwenden -> das nupkg wird in "$" erstellt (C: _work) und nicht in "$/MyProject/Common/dir_a/dir_b" wie erwartet. –

+1

@AviramFireberger Nach durchlaufen mehr Details, das gleiche Ergebnis wie Sie. Nicht sicher, dass das gleiche Verzeichnis die gleiche Ordnerebene oder nicht bedeutet. Ich schlage vor, dass Sie einen Fehlerbericht in GitHub einreichen oder Community entwickeln. Weitere Details finden Sie in meiner Update-Antwort. –

+0

Großartig, Danke für die ausführliche Antwort –

Verwandte Themen