我们最近升级到 Jenkins 2.60.1,现在我们的 .NET 应用程序的 ci 构建由于缺少 Microsoft Fakes 程序集而失败:
API 控制器单元测试.cs (20,30(: 错误 CS0234: 类型或命名空间 名称"假货"在命名空间"域"中不存在(您是否缺少 程序集引用? [e:\jenkins\workspace\proj\ci\Web\Web.Test\Web.Test.csproj] ApiControllerUnitTest.cs(31,21(:错误 CS0234:命名空间中不存在类型或命名空间名称"质量工具" "Microsoft"(是否缺少程序集引用?
在构建的更远处,我注意到以下警告:
23>C:\程序文件 (x86(\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(1697,5(: 警告MSB3245:无法解析此引用。找不到 程序集"域.假货"。检查以确保程序集存在于 磁盘。如果您的代码需要此引用,您可能会得到 编译错误。 [e:\jenkins\workspace\proj\ci\Web\Domain.Test\Domain.Test.csproj]
我们上次成功的构建在日志中具有以下内容:
25>BuildFakesAssemblies: Domain.Fakes -- e:\jenkins\workspace\proj\ci\Web\Domain.Test\FakesAssemblies\Domain.Fakes.dll
升级后的最新版本不再执行 MSBuild 中的 BuildFakesAssemblies 任务,这说明为什么程序集丢失是有道理的,因为它们不是通过此任务创建的。 在上次成功的生成和当前失败的生成之间,此项目中没有任何变化。
我确实登录到我们的构建服务器,并注意到我们的VS Studio 2013 Premium许可证已过期。 我知道你需要高级版或终极版来利用 Fakes,但我不确定在构建服务器上是否需要这样做,在该服务器上,MSBuild 是通过该盒子上的 Jenkins 从命令行执行的。 有没有人遇到过此错误,或者知道您是否需要在构建服务器上安装有效的 VS Studio 许可来编译 Fakes 程序集?
我们的管理员刚刚添加了临时许可证,现在我们的构建再次运行。
总之,看起来您需要在具有有效许可证的构建服务器上具有VS Studio Premium 2013或Ultimate 2013的实例,才能让MSBuild构建Fakes程序集。
从命令行运行MSBuild时必须安装VS Studio似乎很愚蠢,但这似乎是对我们有用的唯一方法。