Пакет NuGet для непрерывной интеграции TFS
Я пытаюсь сделать наш процесс сборки TFS для генерации пакетов NuGet из проектов нашего решения. Мы стремимся создать частный источник пакетов, чтобы все другие внутренние продукты могли загружать / обновлять фреймворк с помощью NuGet.
Пока что у нас есть процесс сборки (долгое время) и версионирование наших библиотек, и остается только "Nuget Pack«все проекты.
Что я пробовал до сих пор:
nuget spec * .csproj, затем nuget pack * .nuspec;nuget spec * .dll, затем nuget pack * .nuspec;пакет nuget * .csproj напрямую (без файла .nuspec);Все они, кажется, работают, но все они, кажется, терпят неудачу на шагах, в которых я действительно нуждаюсь, чтобы они преуспели.
Что я на самом деле получаю от выполнения упомянутых шагов:
нет в списке зависимостей,нет ссылка² в списке;
нет в списке зависимостей,нет в списке reference² все библиотеки из каталога упакованы в один и тот же файл .nupkg (без использования -IncludeReferencedProjects);
(Пока лучшее)Несколько перечисленные зависимости,нет ссылка ² перечислена, только фактическая dll проекта находится внутри папки 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 из ссылочного проекта). Например: у меня есть проект, который зависит от 4 других пакетов NuGet, только 2 перечислены как зависимости от сгенерированного файла .nuspec.
Важная информация:
Каждый проект имеет свой собственный package.config, способ, которым NuGet его создает;Папка решения содержит папку пакетов со всеми ссылочными пакетами;Уже пробовал Nugetter (XAML не работает на VS 2012.3 и TFS 2012, не может открыть его)Уже попробовалэтотакже не включает в себя зависимости и ссылки должным образом;Восстановление пакета решений включеноНА (нам нужно это, чтобы избежать хранения пакетов в TFS).Что мне нужно:
Автоматизируйте процесс упаковки, чтобы упаковать каждый csproj, включая все ссылки и зависимости в файле .nuspec, чтобы все они были правильно загружены при установке.Подобные вопросы, которые я изучал:
NuGet: команда pack НЕ включает зависимости nuget
Пакет Nuget, включая зависимости для некоторых проектов
Почему Nuget не включает указанный проект при упаковке?