Nuget - решение для нескольких проектов (нацеливание на несколько фреймворков)

Скажем, у меня есть следующее решение с несколькими версиями одного и того же кода, каждая из которых нацелена на разную инфраструктуру, и я хотел бы создать пакет nuget из него.

SharedLib.sln
  SharedLib.Net35.csproj
    packages.config
  SharedLib.Net40.csproj
    packages.config
  SharedLib.Phone.csproj
    packages.config
  SharedLib.SL4.csproj
    packages.config

Ожидаемый нупкг имеет следующую структуру

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 ответ

Решение

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

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

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

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

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

Другие вопросы по тегам