2016-11-13 10 views
3

Ich versuche, ein NuGet-Paket über die Befehlszeile zu erstellen und ich kann nicht herausfinden, wie Beschreibung, Autor, Titel, Zusammenfassung, ReleaseNotes und Besitzer festgelegt werden. Das Paket schafft erfolgreich es gibt mir nur diese Warnung:Nuget.exe pack WARNUNG: Beschreibung wurde nicht angegeben. Mit 'Beschreibung'

WARNING: Description was not specified. Using 'Description'. 
WARNING: Author was not specified. Using 'User'. 

Hier ist mein Befehl:

NuGet.exe pack "<MyProjectPath>.csproj" -OutputDirectory "<MyOutputDirectory>" -Properties Configuration=release;Description="MyDescription";Authors="MeMeMe...MeToo";Title="MyTitle";Summary="MySummary";releaseNotes="MyChanges;"Owners="MyCompany" 

Ich bin mir nicht sicher, ob dies Fragen, aber ich bin mit NuGet.exe, die von der kam "CredentialProviderBundle.zip" -Datei von Visual Studio Team Services heruntergeladen.

+0

Geben Sie AssemblyCompany und AssemblyDescription-Werte in der Datei AssemblyInfo.cs an? Wenn ja, könnten Sie dieses Problem mit einem neuen Projekt reproduzieren? –

+0

Ich habe ein neues Klassenbibliotheksprojekt erstellt. Ich habe die AssemblyInfo.cs-Datei überhaupt nicht geändert. AssemblyCompany und AssemblyDescription sind beide eine leere Zeichenfolge. Genaues Problem. – LorneCash

+0

Ich habe dann AssemblyCompany und AssemblyDescription angegeben und sie sind jetzt in der Nuspec-Datei eingetragen und es gab keine Warnungen, aber sie werden mit den Werten von AssemblyInfo.cs und NICHT mit den Werten gefüllt, die ich in der Befehlszeile angegeben habe. Auch die Zusammenfassung und ReleaseNotes wurden der Nuspec-Datei nicht hinzugefügt. – LorneCash

Antwort

2

Es ist eigentlich fast nichts falsch mit dem Befehl.

Es ist nicht möglich zu tun, was die Frage ohne einige Voraussetzungen fragt.

  1. Es muss eine * .nuspec-Datei im selben Verzeichnis wie die * .csproj mit dem gleichen genauen Namen vorhanden sein.
  2. Die * .nuspec Datei muss alle Elemente enthalten, die Sie über die Kommandozeile
  3. Alle Elemente zu setzen versuchen, die ein Token in der Form „$ tokenName $“ enthalten
  4. In der über die Kommandozeile aufgefüllt werden muss Befehlszeile müssen Sie nicht das * .nuspec Elementnamen angeben, sondern die zwischen den Dollarzeichen enthalten Wert (AKA der Token-Name)
  5. der Token Name der gleiche wie der Elementname für alle Eigenschaften in der Frage aufgeführt sein kann mit die Ausnahme des Elements Beschreibung. Das Token des Elementes Beschreibung darf NICHT "Beschreibung" heißen. "Desc" funktioniert hier einwandfrei. (Aus diesem Grunde sagte ich so gut wie nichts falsch mit dem Befehl in der Frage aufgeführt)

Hier ist ein Beispiel für eine * .nuspec Datei für dieses spezielle Beispiel:

<?xml version="1.0"?> 
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"> 
    <metadata> 
     <id>$Id$</id> 
     <version>$Version$</version> 
     <title>$Title$</title> 
     <authors>$Authors$</authors> 
     <owners>$Owners$</owners> 
     <requireLicenseAcceptance>false</requireLicenseAcceptance> 
     <description>$Desc$</description> 
     <summary>$Summary$</summary> 
     <releaseNotes>$ReleaseNotes$</releaseNotes> 
     <copyright>Copyright © 2016</copyright> 
     <dependencies /> 
    </metadata> 
</package> 

Der ID und Version don‘ t müssen Token haben, weil sie automatisch überschrieben werden, aber es tut nicht weh.

Hier ist die Befehlszeile Sie mit der * .nuspec Datei wie oben angegeben verwendet werden sollen:

NuGet.exe pack "<MyProjectPath>.csproj" -OutputDirectory "<MyOutputDirectory>" -Properties Configuration=release;Desc="MyDescription";Authors="MeMeMe...MeToo";Title="MyTitle";Summary="MySummary";ReleaseNotes="MyChanges;"Owners="MyCompany" 
+2

Aber was, wenn Sie keine Nuspec-Datei verwenden möchten? Ich bevorzuge nur Verpackung von csproj, und einige Versionen von Nuget, die ich verwendet habe, würde die Beschreibung von der AssemblyInfo abholen, aber andere nicht. Ich bevorzuge das Packen von csproj, weil ich dann den nuspec nicht aktualisieren muss, was sehr mühsam werden kann, wenn Sie Versionsabhängigkeiten ändern. Das Packen von csproj aktualisiert nur die Abhängigkeiten automatisch. –

0

Ich weiß, das ziemlich alt ist, aber ich habe eine Zeit lang mit diesem Thema heute zu kämpfen. Ich lief

nuget pack SomeRandom.csproj -Properties Configuration=Release

und ich war immer ‚Beschreibung erforderlich ist‘ Fehler.

landete ich dann die nuspec Datei zu löschen und nuget ein neues, indem Sie

nuget spec SomeRandom.csproj

Dann erstellen bekommen, wenn ich es funktionierte gut nuget zu packen lief. Seltsam, aber könnte jemandem helfen.

0

Gerade zu diesem Beitrag hinzuzufügen, da beides nicht vollständig mir geholfen, führen Sie den Befehl

nuget pack 

Dies wird eine Package.nuspec-Datei für Sie auf der Basis Ihrer Lösung erstellen. Sobald dies erledigt ist, müssen Sie die Datei in NameOfProject.nuspec umbenennen. Also, wenn mein Projekt GameEngine.csproj heißt, dann werde ich meineDatei in GameEnginer.csproj umbenennen. Verschieben Sie diese Datei dann in den gleichen Ordner, in dem sich die .csproj befindet (NICHT den Debug/Release-Ordner, sondern nur den Basisordner, in dem sich alle handgeschriebenen Code-Dateien befinden). Dann gehen Sie vor und

nuget pack RelativePathOfNameOfProject.csproj 

So laufen, wenn ich wollte meine GameEngine.csproj den Befehl treffen würde so etwas wie

nuget pack .\GameEngine\GameEngine.csproj 

Da meine Ordnerstruktur aussehen sieht ungefähr so ​​aus:

root/ 
├── Folder1/ 
├── Folder2/ 
├── GameEngine/ 
│ ├── bin/ 
│ ├── obj/ 
│ ├── Properties/ 
│ ├── Class1.cs 
│ ├── Class2.cs 
│ ├── GameEngine.nuspec 
│ └── GameEngine.csproj 
├── packages/ 
└── GameEngine.sln/ 

Hoffentlich zwischen Diese Antworten können Sie herausfinden :)

1

Falls dies jemand anderem hilft , ein dummer Grund für den Fehler "Beschreibung ist erforderlich": Ich habe mein Projekt nicht neu erstellt, seit ich eine Beschreibung zu meiner AssemblyInfo hinzugefügt habe.

Ich hatte eine Nuspec-Datei in meinem Projektverzeichnis mit einem Token <description>$description$</description> definiert. Als ich

lief
nuget pack MyProject.csproj 

sah ich eine „Beschreibung erforderlich ist“ Fehler, auch wenn meine Assembly [assembly: AssemblyDescription("A DESCRIPTION.")] enthielt ...

... weil, obwohl Sie die .csproj packen, es Ihre letzte Build ist, dass wird tatsächlich von Nuget gepackt. oh!