如何使用Continuous Integration服务器处理构建破坏外部依赖项?(例如,使用TeamCity的Crystal Reports)

i8a*_*bug 1 c# teamcity continuous-integration

我是使用持续集成的新手,并决定选择TeamCity.我遇到的一个问题是由于缺少依赖性,我的代码没有编译.

(8,7):错误CS0246:找不到类型或命名空间名称'CrystalDecisions'(您是否缺少using指令或程序集引用?)

所以,我不太确定在这里做什么是正确的.

  1. 我是否可以安装Crystal Reports可再发行组件并让它永远坐在那里?
  2. 我是否设置了我的构建,以便在编译完成之前安装Crystal Reports并在所有测试完成后卸载?
  3. 其他一些我不知道的选择?

选项(1)似乎可能是一个问题,因为我可能有多个项目需要不同版本的Crystal Reports,也许我不能安装它们.选项(2)似乎可以通过命令行.我猜这是正常的做法吗?

谢谢

Kei*_*thS 5

要简洁地回答你的问题,你应该在每个预期编译代码库的盒子上安装可再发行组件,包括TeamCity构建代理,并将它无限期地保留在那里(从那时起,你应该只需要再次触摸该软件包来更新它到您的应用程序可能需要的更高版本).

通常,TeamCity服务器(和/或其构建代理,如果使用分布式CI模型)需要设置简单的开发环境和/或软件的安装.换句话说,构建代理将需要与开发环境所需的相同资源来编译应用程序,除了完全安装IDE(您可能正在使用msbuild或nant),原因完全相同开发环境需要资源.此类资源包括但不限于:

  • 代码库本身; 所有源代码,配置文件和内容/嵌入式资源文件.
  • .NET Framework的目标版本以及您希望明确支持的任何其他版本(例如,当您定位4.0时为3.5)
  • 外部库,如ORM和IoC框架,NUnit,自定义数据提供程序(如SqLite),以及是可再发行组件(如Crystal Reports).这包括必要的GAC注册.
  • 适用于输入,输出,装配参考等的文件夹结构与开发环境相同.

确保实现这一目标的最简单方法是尽可能将其构建到您的解决方案体系结构中.