Я прочитал несколько сообщений (см. Ссылки ниже) и еще не нашел руководства по передовым методам, относящимся к моему техническому стеку.
Цель: создать единый пакет NuGet, ориентированный на несколько платформ .NET, построенных из одного файла .csproj через TeamCity с использованием MSBuild и NuGet.
Ограничения:
- Вытяните код из VCS только один раз.
- Все скомпилированные сборки должны иметь одинаковую версию.
- Один .csproj (не один на целевую платформу).
У меня есть два подхода:
Создайте единую конфигурацию сборки. Он будет содержать три этапа сборки: компилировать .NET 3.5, компилировать .NET 4.0, упаковывать с NuGet. Каждый шаг сборки будет зависеть от успеха последнего. Единственная реальная проблема, которую я вижу в этом подходе (и, надеюсь, есть решение, о котором я не знаю), заключается в том, что для каждого шага сборки потребуется собственный набор параметров сборки (например, system.TargetFrameworkVersion и system.OutputPath) для обозначения уникальное место для размещения DLL (например, bin \ release \ v3.5 и bin \ release \ v4.0), чтобы этап пакета NuGet мог выполнять свои функции на основе раздела Files в файле .nuspec.
Создайте несколько конфигураций сборки. Одна конфигурация сборки на этапы сборки, описанные выше. При таком подходе легко решить проблему параметров сборки TargetFrameworkVersion и OutputPath, но теперь мне нужно создать зависимости моментальных снимков и поделиться номером версии сборки между сборками. Он также съедает слоты конфигурации сборки, что для нас нормально (но не оптимально), поскольку у нас есть лицензия Enterprise.
Вариант №1 кажется очевидным. Вариант №2 кажется грязным.
Итак, у меня два вопроса:
- Можно ли создать параметры, уникальные для этапа сборки?
- Есть ли третий, лучший подход?
Ссылки:
- Мультифреймворковая сборка NuGet с символами для управления внутренними зависимостями < / а>
- Nuget - упаковка решения с несколькими проектами (для нескольких фреймворков )
- http://lostechies.com/joshuaflanagan/2011/06/23/tips-for-building-nuget-packages/
- http://msdn.microsoft.com/en-us/library/hh264223.aspx
- https://stackoverflow.com/a/1083362/607701
- http://confluence.jetbrains.com/display/TCD7/Configuring+Build+Parameters
- http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package