我们正在运行一台TeamCity 8.1.4 buildserver,并在机器上安装了VS2013.
我最近推出了依赖于Microsoft Fakes Framework的测试.因此,我必须添加一些对新Fake组件和Microsoft.VisualStudio.TestTools.UnitTesting
组件的引用.这一切都在我的本地开发机器上运行良好.
现在,当我尝试在TeamCity服务器上构建解决方案时,会引发以下错误:
SomeDirectory\Processors\ProcessorTests.cs(3,27):错误CS0234:名称空间'SomeDirectory.Database'中不存在类型或命名空间名称'Fakes'(您是否缺少程序集引用?)
SomeDirectory\Processors\ProcessorTests.cs(7,66):错误CS0234:名称空间'SomeDirectory.Service.Processor.Report.Processors'中不存在类型或命名空间名称'Fakes'(您是否缺少程序集引用?)
SomeDirectory\Processors\ProcessorTests.cs(9,17):错误CS0234:名称空间"Microsoft"中不存在类型或命名空间名称"QualityTools"(您是否缺少程序集引用?)
我有点理解前两个错误,因为我没有在SVN中提交Fake程序集,因此无法找到它们.我也不想提交这些文件,因为构建服务器应该自己生成这些文件.该BuildAction
假货,文件设置为Fakes
.
我的猜测是在第三个错误中遇到它们的起源的前两个错误.据我所知,QualityTools
命名空间位于程序集中Microsoft.VisualStudio.TestTools.UnitTesting
.
我尝试用几种设置解决这个问题.我配置的原始构建步骤是:
跑步者类型= Visual Studio(sln)
Visual Studio = Microsoft Visual
Studio 2013
我把它改成了:
跑步者类型= MSBuild
MSBuild版本= Microsoft Build Tools 2013
MSBuild ToolsVersion = 12.0
我也尝试过.NET 4.5
使用ToolsVersion 的MSBuild版本4.0
.
所有这些设置都会导致相同的错误.
您可以理解,此解决方案目前无法编译,因此我无法确定测试是否会运行.我已经找到了关于如何使用TeamCity配置测试步骤的帖子,但这是下一步.
有人知道如何解决TeamCity和VS2013的这些问题?
编辑
我已经检查TestTools.UnitTesting
过文件系统上是否存在程序集.这个组件存在,所以这应该不是问题
编辑2
糟糕,我误读了第三条错误消息.我应该一直在寻找Microsoft.QualityTools.Testing.Fakes
程序集,因为它说它无法解析QualityTools
命名空间.检查路径后,Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\PublicAssemblies
我可以确认文件系统上没有dll.
我已经手动将它复制到构建服务器,看看接下来会发生什么.
编辑3
将Microsoft.QualityTools.Testing.Fakes
程序集复制到构建服务器后,解决方案就像魅力一样编译.但是,现在我收到熟悉了
无法从COR_PROFILER_PATH和COR_PROFILER环境变量解析探查器路径.
我之前在TFS2012服务器上看过这个.这意味着它无法处理垫片,我们不得不升级到TFS2013.
我刚刚登录buildserver,看到VS2013版本已过期.这也许是它无法正常工作的原因.已安装的VS2012安装版本为11.0.50727.1,因此未安装Update 3.我将与我的同事讨论是否可以更新.希望这将解决我所面临的假货和垫片问题.
解决 显然有人认为在构建服务器上安装VS2013 Professional很有趣.因此假货无法运行,因为它是高级功能.安装了高级版,现在一切都像魅力一样.