Nuget - упаковка решения с несколькими проектами (ориентированное на несколько фреймворков)
Скажем, у меня есть следующее решение с несколькими версиями одного и того же кода, каждый из которых нацелен на другую структуру, и я хотел бы создать из него пакет nuget.
SharedLib.sln
SharedLib.Net35.csproj
packages.config
SharedLib.Net40.csproj
packages.config
SharedLib.Phone.csproj
packages.config
SharedLib.SL4.csproj
packages.config
Ожидаемый nupkg имеет следующую структуру
SharedLib.1.0.nupkg
lib/net35/SharedLib.dll
lib/net40/SharedLib.dll
lib/sl4-wp/SharedLib.dll
lib/sl4/SharedLib.dll
nuget.exe pack SharedLib.SL4.csproj
автоматически определит, что целевая структура SilverLight4 и поместить двоичные файлы в lib/sl4
Я знаю, что я могу добавить файл SharedLib.SL4.nuspec
с секцией <file>
, чтобы включить двоичные файлы из других проектов, но есть ли способ сделать nuget автоматически помещать результат объединенного решения в правильную структуру (а также обнаруживать зависимости в packages.config из всех проектов?
Ответы
Ответ 1
Нет, в настоящее время нет способа сделать это иначе, чем написать пользовательскую сборку script, которая помещает файлы в нужное место, а затем запускает на них пакет NuGet или использовать описанный вами подход .nuspec.
Это функция, которую мы хотели бы иметь, но не подумали о том, как это сделать. Однако ваш пост просто дал мне идею.
Сегодня вы можете указать пакет nuget в файле .csproj.
Мы могли бы рассмотреть подход, который позволил бы указать его в .sln файле, и если имена проектов следуют некоторым соглашениям, мы упакуем все проекты в один пакет.
Если вы действительно хотите эту функцию, рассмотрите вопрос о регистрации проблемы в отслеживателе проблем NuGet. http://nuget.codeplex.com/workitem/list/basic