MSBuild 由于丢失假货而失败



我们最近升级到 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似乎很愚蠢,但这似乎是对我们有用的唯一方法。

最新更新