Подтвердить что ты не робот

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 из всех проектов?

4b9b3361

Ответ 1

Нет, в настоящее время нет способа сделать это иначе, чем написать пользовательскую сборку script, которая помещает файлы в нужное место, а затем запускает на них пакет NuGet или использовать описанный вами подход .nuspec.

Это функция, которую мы хотели бы иметь, но не подумали о том, как это сделать. Однако ваш пост просто дал мне идею.

Сегодня вы можете указать пакет nuget в файле .csproj.

Мы могли бы рассмотреть подход, который позволил бы указать его в .sln файле, и если имена проектов следуют некоторым соглашениям, мы упакуем все проекты в один пакет.

Если вы действительно хотите эту функцию, рассмотрите вопрос о регистрации проблемы в отслеживателе проблем NuGet. http://nuget.codeplex.com/workitem/list/basic