我讀過的職位的少數(見下面的參考資料),還沒有找到最佳實踐指南,是專門針對我的技術堆棧。有沒有推薦的方法來配置NuGet包使用的MSBuild在TeamCity的針對多個框架?
目標:使用MSBuild和NuGet通過TeamCity創建一個單一的NuGet包,其目標是通過一個.csproj文件構建的多個.NET框架。
約束:
- 代碼從VCS拉只有一次。
- 所有編譯組件時,應當進行版本相同。
- 單.csproj的(而不是每個目標框架)。
我心裏有兩種方法:
創建一個單一的生成配置。它將包含三個構建步驟:編譯.NET 3.5,編譯.NET 4.0,包裝NuGet。每個構建步驟都取決於最後的成功。我用這種方法看到的唯一真正的問題(希望有一個我不知道的解決方案)是每個構建步驟都需要它自己的一組構建參數(例如,system.TargetFrameworkVersion和system.OutputPath)來指定DLL的獨特位置(例如,bin \ release \ v3.5和bin \ release \ v4.0),以便NuGet pack步驟能夠基於.nuspec文件中的Files部分完成它的工作。
創建多個構建配置。按照上面概述的構建步驟構建一個配置。使用這種方法,很容易解決TargetFrameworkVersion和OutputPath構建參數問題,但是現在我必須創建快照依賴性並在構建中共享程序集版本號。它也吃了構建配置插槽,因爲我們確實有一個企業許可證這是確定(但不是最優的)我們。
選項#1似乎是明顯的選擇。選項#2感覺髒。
所以我的兩個問題是:
- 是否有可能創建出獨特的生成步驟的參數?
- 有沒有第三種更好的方法?
參考文獻:
- Multi-framework NuGet build with symbols for internal dependency management
- Nuget - packing a solution with multiple projects (targeting multiple frameworks)
- 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
我已經實現了兩種方法的解決方案,並會盡快發佈單獨的答案(如時間允許)。 – 2013-04-15 21:31:12
我正在等待着誘餌的呼吸;-)巧合的是我只是有相同的要求。 – 2013-04-17 02:00:17
哈哈,蒂姆。我從組裝信息youtrack討論中識別出你的名字(http://youtrack.jetbrains.com/issue/TW-27596)。你和我正在遵循同樣的問題。我會盡力在本週發佈我的兩個答案。 ;) – 2013-04-17 02:52:49