2016-11-13 3 views
3

Я пытаюсь создать пакет NuGet через командную строку, и я не могу понять, как установить «Описание», «Автор», «Название», «Сводка», «ReleaseNotes» и «Owner». Пакет создает успешно он просто дает мне это предупреждение:Пакет Nuget.exe ВНИМАНИЕ: Описание не указано. Использование «Описание»

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

Вот моя команда:

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

я не уверен, если это имеет значение, но я использую NuGet.exe, который пришел из Файл CredentialProviderBundle.zip, загруженный из Visual Studio Team Services.

+0

Вы указываете значения AssemblyCompany и AssemblyDescription в файле AssemblyInfo.cs? Если да, не могли бы вы воспроизвести эту проблему с новым проектом? –

+0

Создал новый проект библиотеки классов. Я вообще не изменял файл AssemblyInfo.cs. AssemblyCompany и AssemblyDescription являются пустой строкой. То же точно проблема. – LorneCash

+0

Затем я указал AssemblyCompany и AssemblyDescription, и теперь они заполнены в файле nuspec, и не было никаких предупреждений, но они заполнены значениями из AssemblyInfo.cs и НЕ значениями, указанными в командной строке. Кроме того, в файл nuspec не добавлены краткие и ReleaseNotes. – LorneCash

ответ

2

В команде практически нет ничего плохого.

Невозможно сделать то, что задает вопрос без каких-либо предварительных условий.

  1. В этом же каталоге должен быть * .nuspec файл с таким же именем. * .csproj.
  2. The * .nuspec файл должен содержать все элементы, которые вы пытаетесь установить с помощью командной строки
  3. Всех элементов, которые будут заполняться с помощью командной строки должен содержать маркер в виде «$ tokenName $»
  4. В командной строки вы не должны указывать имя элемента * .nuspec, а значение, содержащееся между знаками доллара (AKA - имя токена)
  5. Имя токена может совпадать с именем элемента для всех свойств, перечисленных в вопросе, с за исключением элемента описания. Символ элемента описания не должен называться «Описание». «Desc» отлично работает здесь. (Вот почему я сказал ПОЧТИ ничего плохого в команде, перечисленных в вопросе)

Здесь не приведен пример * .nuspec файла для этого конкретного примера:

<?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> 

Идентификатор и версии Дон» t нужно иметь токены, потому что они будут автоматически перезаписаны в любом случае, но это не повредит.

Вот командной строки вы должны использовать с * .nuspec файла, как указано выше:

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

Но что делать, если вы не хотите использовать файл nuspec? Я предпочитаю только упаковку из csproj, а некоторые версии nuget, которые я использовал, будут получать описание из AssemblyInfo, а другие - нет. Я предпочитаю упаковку из csproj, потому что тогда мне не нужно обновлять nuspec, который может стать очень утомительным, когда вы меняете версии зависимостей. Упаковка из csproj автоматически обновляет версии зависимостей. –

0

Я знаю, что это довольно старая, но я боролся с этим вопросом сегодня на некоторое время. Я бегала

nuget pack SomeRandom.csproj -Properties Configuration=Release

и я получаю «Описание требуется» ошибка.

Я кончался затем удалите nuspec файл и получить NuGet, чтобы создать новый, запустив

nuget spec SomeRandom.csproj

Тогда, когда я побежал NuGet пакет он работал отлично. Странно, но может помочь кому-то.

0

Просто, чтобы добавить к этому сообщению, поскольку ни один из них полностью помог мне, запустите команду

nuget pack 

Это создаст Package.nuspec файл для вас на базе вашего решения. Как только это будет сделано, вы должны переименовать файл в NameOfProject.nuspec. Поэтому, если мой проект называется GameEngine.csproj, тогда я переименую свой файл nuspec в GameEnginer.csproj. Затем переместите этот файл в ту же папку, в которой находится .csproj (НЕ папка отладки/выпуска, а только базовая папка, содержащая все ваши рукописные файлы кода). Затем идти вперед и запустить

nuget pack RelativePathOfNameOfProject.csproj 

Так что, если я хотел ударить мою GameEngine.csproj команду будет выглядеть примерно так

nuget pack .\GameEngine\GameEngine.csproj 

С моей структуры папок выглядит примерно так:

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

Надеюсь между эти ответы, вы можете понять это:

1

В случае, если это поможет кому-то еще , глупая причина для получения ошибки «Описание требуется»: я не перестраивал свой проект, так как я добавил описание в свою AssemblyInfo.

Я определил файл nuspec в моем каталоге проектов с помощью токена <description>$description$</description>. Когда я побежал

nuget pack MyProject.csproj 

Я видел «Описание требуется» ошибка, хотя мой AssemblyInfo содержал [assembly: AssemblyDescription("A DESCRIPTION.")] ...

... потому что, хотя вы упаковать .csproj, это ваш последний билд, который фактически упакован Nuget. d'о.

Смежные вопросы