2013-12-19 2 views
4

Я пытаюсь сделать наш процесс сборки TFS для создания пакетов NuGet из проектов нашего решения. Мы стремимся создать частный пакетный источник, поэтому все другие внутренние продукты могут загружать/обновлять структуру с помощью NuGet.NuGet пакет для непрерывной интеграции TFS

До сих пор у нас есть процесс сборки (в течение длительного времени) и управление версиями наших библиотек, и единственное, что осталось, это «nuget pack« все проекты.


Что я судимый до сих пор:

  1. NuGet спецификация * .csproj, то NuGet пакета * .nuspec;
  2. nuget spec * .dll, затем nuget pack * .nuspec;
  3. nuget pack * .csproj напрямую (файл .nuspec);

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

То, что я на самом деле получить от него указанные действия:

  1. Нет dependency¹ не перечисленные, не reference² не перечисленные;

  2. Нет dependency¹ не указано, не reference² в списке, все DLLки из каталога не упаковывается на ту же .nupkg (whitout использования -IncludeReferencedProjects);

  3. (Лучшее до сих пор) Некоторые dependencies¹ в списке, не reference² в списке, только фактический длл проект находится внутри Lib папки на .nupkg.

¹: По зависимости я имею в виду NuGet зависимости, пакеты от NuGet
²: По ссылке я имею в виду ссылки на проекты решения.


Пример сценария:

Solution1.sln
- ProjectA
- ProjectB

ProjectA имеет Код проекта к ProjectB. То, что я ожидать произойдет на .nuspec генерируемой:

<?xml version="1.0"?> 
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"> 
    <metadata> 
    <id>ProjectA <- OK</id> 
    <version>1.2.0.0 < - OK</version> 
    <title>ProjectA <- OK</title> 
    <authors>My Company <- OK</authors> 
    <owners>My Company <- OK</owners> 
    <requireLicenseAcceptance>false</requireLicenseAcceptance> 
    <description>Description</description> 
    <copyright>OK</copyright> 
    <dependencies> 
     <dependecy id="ProjectB" Version="1.2.0.0" /> <<<<<<---- NOT HAPPENING! 
    </dependencies> 
    </metadata> 
</package>  

Некоторые NuGet зависимости перечислены, но не все из них (даже тогда, когда они находятся внутри packages.config от refeered проекта).Например: у меня есть проект, который зависит от 4 других пакетов NuGet, только 2 указаны как зависимости от сгенерированного файла .nuspec.


Важная информация:

  • Каждый проект имеет свой собственный packages.config, путь NuGet строит его;
  • Папка решений содержит папку с пакетами со всеми ссылочными пакетами;
  • Уже судимое Nugetter (XAML сломаны на VS 2012.3 и TFS 2012, не может открыть его)
  • Уже судимое this, также не содержит зависимостей и ссылки надлежащим образом;
  • Решение пакета восстановления завершено ON (нам нужно, чтобы избежать хранения пакетов на TFS).

Что мне нужно:

  • Автоматизация процесса пакет для упаковки каждого csproj, включая все ссылки и зависимостей на .nuspec файл, поэтому все они будут правильно загружены при установке Это.

Подобные вопросы я посмотрел на:

NuGet: pack command is NOT including nuget dependencies
Nuget pack only including dependencies for some projects
Why doesn't nuget include the referenced project when packing?

ответ

3

Оказалось, что это проблема простого пути. Ссылки и зависимости не были добавлены должным образом, потому что я выполнял команду из другого рабочего каталога.

Кроме того, использование -IncludeReferencedProjects необходимо для правильного добавления всего необходимого.

После этого процесс сборки с использованием Powershell успешно завершен и все работает должным образом =)

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