Ich arbeite gerade an einer .NET Core-Bibliothek, die ich als NuGet-Paket in einem anderen Projekt verwenden werde.Automatisieren des Nuget-Pakets Push mit .NetCore RC2
Ich konnte das Projekt erfolgreich mit dem Befehl "dotnet pack" im Projektverzeichnis verpacken und dieses Paket nach MyGet hochladen.
Ich würde diesen Vorgang des Pushings des NuGet-Pakets mit dem Befehl "nugget push" lieber automatisieren.
Mein Problem ist, dass die Eigenschaft "scripts", die in der Datei project.json definiert ist, nicht auf Pack oder Build ausgeführt wird. Ich habe erwartet, dass diese Skripte ausgeführt werden, wenn das entsprechende Ereignis eintritt, aber sie scheinen keine Wirkung zu haben, da ich beim Erstellen keine Ausgabe an die Konsole sehe, mit oder ohne das ausführliche Tag.
Ich verstehe, dass MyGet einen Paket-Feed basierend auf einem Git-Repository aktualisieren kann, aber ich würde gerne verstehen, wenn es ein Problem mit der Ausführung eines Skripts gibt, das derzeit eine project.json verwendet. Im Idealfall möchte ich den Befehl nugget push verwenden, nachdem das Paket erfolgreich ausgeführt wurde.
Hier ist meine project.json Datei:
{
"version": "0.0.1",
"scripts": {
"postbuild": [ "echo build" ],
"prebuild": "echo build",
"postpack": "echo build",
"postpublish": "echo build",
"postrestore": "echo build",
"prepack": "echo build",
"prepare": "echo build",
"prepublish": "echo build",
"prerestore": "echo build"
},
"dependencies": {
"NETStandard.Library": "1.5.0-rc2-24027"
},
"frameworks": {
"netstandard1.5": {
}
},
"buildOptions": {
"allowUnsafe": false,
"debugType": "portable",
"emitEntryPoint": false,
"xmlDoc": false
},
"commands": { },
"packOptions": {
"files": {
"include": "%project:Directory%/bin/release/*.nupkg"
}
},
"configurations": {
"Debug": {
"buildOptions": {
"define": [ "DEBUG", "TRACE" ]
}
},
"Release": {
"buildOptions": {
"define": [ ]
}
}
}
}
Wie können Sie dies verwenden und mehrere Frameworks umgehen? Wenn Sie mehrere Frameworks haben, wird die Postcompile nach der Kompilierung jedes Frameworks ausgeführt, also der erste wird ausgeführt, packt (alle Frameworks, aber nur das erste Framework wurde neu kompiliert) und pusht, der zweite wird ausgeführt, packt (alle Frameworks), tut dies aber nicht push, weil dieses Versionspaket bereits existiert ... – Adam
Ich habe eine Reihe von Bibliotheken, die auf net461- und netstandard1.5-Frameworks abzielen, und es treibt das Paket voran. Der einzige Vorbehalt ist, dass ich zu einem lokalen geteilten Ordner drücke anstatt zu nuget, also bin ich mir sicher, was passieren würde, wenn ich drängen würde, nugget zu machen. – DazFahy
Bevor Sie den nuget-Push ausführen, sollten Sie eine Skriptdatei verwenden und auf das richtige Framework testen.Die gesuchte Kontextvariable ist% compile: TargetFramework% oder% compile: FullTargetFramework% Ich habe eine vollständige Liste der Kontextvariablen hier: http://Stackoverflow.com/a/38339463/1112558 – Erikest