2012-01-31 5 views
8

Я включил следующую строку в CI-построить для создать частный пакет NuGet на каждой сборки:NuGet: включают .pdb файлы и исключить «Content» папку

nuget pack C:\Projects\Test\Test.vbproj -OutputDirectory \\nas1\NuGet 

AssemblyInfo считывается (включая номер версии) и создается пакет NuGet.
Я бы хотел, чтобы пакет включал файлы .pdb и не содержал папку «Содержимое» (так что только «lib»).

Как может я изменить команду, чтобы сделать это?

ответ

10

К сожалению, я не думаю, что вы сможете оба исключить файлы содержимого и включают файлы .pdb при упаковке через проект. Вы могли бы сделать то или другое.

Сначала сделайте файл nuspec (команда nuget spec делает это быстро) и поместите его в том же месте, что и ваш проект. Когда вы упаковываете свой проект, NuGet.exe будет рассматривать спецификацию в качестве дополнения к информации о вашем проекте.

Чтобы исключить папку содержимого, при упаковке проекта, который также имеет файл .nuspec, пустой узел <files /> в спецификации указывает, что вам не нужны файлы содержимого, даже если они существуют в проекте.

Чтобы включить файлы отладки, добавить что-то подобное для вашей спецификации:

<files> 
    <file src="bin\*.pdb" target="lib\net35\" />  
    </files> 

но что бы сказать инструмент, который вы сделать есть содержание, и тогда было бы добавить все другие файлы , также. Вы могли бы, возможно, сделать symbol package для вашего проекта.

Другой вариант - построить исключительно из спецификации (nuget pack Test.nuspec) и указать точно файлы, которые вы хотите включить. Это занимает больше времени, но дает полный контроль над содержимым пакета.

+3

Дав это немного больше мысли, я полагаю, что это технически возможно сделать это с помощью команды line, включив .pdb через spec (как указано выше), а затем используя флаг -Exclude, чтобы опустить типы файлов, которые вам не нужны.Но вы должны исключить один единственный тип файла, который не является dll или pdb, которые будут включены в «контент», что может быть или не быть практичным для вас. Например, это может исключать конфигурацию, xml и преобразовывать файлы из пакета (и включать файлы pdb, поскольку они установлены в .nuspec): 'nuget pack -Exclude ** \ *. Config; * * \ *. xml; ** \ *. transform' – brainiac10

+0

+1 для удаления папки содержимого с пустым '' '' '' узлом. –

1

В файлах содержимого, которые вы не хотите упаковывать, вам нужно, чтобы они имели действие «Содержимое» в вашем проекте (в окне свойств файла в Visual Studio, если это ваша IDE)?

Если приемлемо изменить действие сборки на «Нет» (или что-то еще), то оно не будет в папке содержимого.

0

Следующее решение работает - если вы не возражаете, включая исходные файлы. Чтобы игнорировать файлы содержимого добавить такой пустой узел к вашему nuspec:

<files> 
</files> 

, а затем запустить:

nuget pack C:\Projects\Test\Test.vbproj -Symbols 
nuget push *.symbols.nupkg -Source \\nas1\NuGet 
+0

Пустое решение больше не работает для меня. –

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

  • Нет связанных вопросов^_^