我读过的职位的少数(见下面的参考资料),还没有找到最佳实践指南,是专门针对我的技术堆栈。有没有推荐的方法来配置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