MSBuild 由于缺少假货而失败
MSBuild failing due to missing Fakes
我们最近升级到 Jenkins 2.60.1,现在我们的 ci 构建我们的 .NET 应用程序由于缺少 Microsoft Fakes 程序集而失败:
ApiControllerUnitTest.cs(20,30): error CS0234: The type or namespace
name 'Fakes' does not exist in the namespace 'Domain' (are you missing
an assembly reference?)
[e:\jenkins\workspace\proj\ci\Web\Web.Test\Web.Test.csproj]
ApiControllerUnitTest.cs(31,21): error CS0234: The type or namespace name 'QualityTools' does not exist in the namespace
'Microsoft' (are you missing an assembly reference?)
进一步构建我注意到以下警告:
23>C:\Program Files
(x86)\MSBuild.0\bin\Microsoft.Common.CurrentVersion.targets(1697,5):
warning MSB3245: Could not resolve this reference. Could not locate
the assembly "Domain.Fakes". Check to make sure the assembly exists on
disk. If this reference is required by your code, you may get
compilation errors.
[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 许可证已过期。我知道您需要 Premium 或 Ultimate 才能利用 Fakes,但我不确定在构建服务器上是否需要这样做,在该服务器上,MSBuild 是通过该机器上的 Jenkins 从命令行执行的。有没有人遇到过这个错误或者知道你是否需要在你的构建服务器上安装有效的 VS Studio 来编译 Fakes 程序集?
我们的管理员刚刚添加了一个临时许可证,现在我们的构建又可以运行了。
总而言之,您似乎需要在具有有效许可证的构建服务器上拥有 VS Studio Premium 2013 或 Ultimate 2013 实例,才能让 MSBuild 构建 Fakes 程序集。
从命令行 运行 MSBuild 时必须安装 VS Studio 似乎很愚蠢,但这是它似乎对我们有用的唯一方法。
我们最近升级到 Jenkins 2.60.1,现在我们的 ci 构建我们的 .NET 应用程序由于缺少 Microsoft Fakes 程序集而失败:
ApiControllerUnitTest.cs(20,30): error CS0234: The type or namespace name 'Fakes' does not exist in the namespace 'Domain' (are you missing an assembly reference?) [e:\jenkins\workspace\proj\ci\Web\Web.Test\Web.Test.csproj] ApiControllerUnitTest.cs(31,21): error CS0234: The type or namespace name 'QualityTools' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?)
进一步构建我注意到以下警告:
23>C:\Program Files (x86)\MSBuild.0\bin\Microsoft.Common.CurrentVersion.targets(1697,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "Domain.Fakes". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. [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 许可证已过期。我知道您需要 Premium 或 Ultimate 才能利用 Fakes,但我不确定在构建服务器上是否需要这样做,在该服务器上,MSBuild 是通过该机器上的 Jenkins 从命令行执行的。有没有人遇到过这个错误或者知道你是否需要在你的构建服务器上安装有效的 VS Studio 来编译 Fakes 程序集?
我们的管理员刚刚添加了一个临时许可证,现在我们的构建又可以运行了。
总而言之,您似乎需要在具有有效许可证的构建服务器上拥有 VS Studio Premium 2013 或 Ultimate 2013 实例,才能让 MSBuild 构建 Fakes 程序集。
从命令行 运行 MSBuild 时必须安装 VS Studio 似乎很愚蠢,但这是它似乎对我们有用的唯一方法。