构建服务器上的SpecFlow错误

时间:2014-02-10 18:49:03

标签: msbuild tfsbuild specflow

我在构建服务器上遇到一个奇怪的错误,这不会发生在本地。

  

文件生成期间出错。目标文件'C:... \ AcceptanceTest \ Features \ HelloWorld.feature.cs'   是只读的,但与转换结果不同。这个   问题可能是源代码包不一致的标志。编   并从开发中签入当前版本的文件   环境或从生成结果中删除只读标志。   编译包含构建上的消息传递项目的解决方案   服务器,您也可以从中排除消息传递项目   构建服务器解决方案或设置msbuild   消息传递项目文件中的项目参数为“true”。

我不知道如何解决这个问题,我没有“消息”项目(或者知道什么也被引用)。代码是最新的

这是完整的消息(某些文件夹名称已被混淆):

  

13取代; C:\构建\ 2 \服务\ PService \ SRC \包\ SpecRun.Excel.1.1.0 \工具\ TechTalk.SpecFlow-buildfix.targets(47,5):   错误:文件生成期间出错。目标文件   'C:\构建\ 2 \ SERVICES \ PService的\ src \ PService \测试\ PService.AcceptanceTest \功能\ HelloWorld.feature.cs'   是只读的,但与转换结果不同。这个   问题可能是源代码包不一致的标志。编   并从开发中签入当前版本的文件   环境或从生成结果中删除只读标志。   编译包含构建上的消息传递项目的解决方案   服务器,您也可以从中排除消息传递项目   构建服务器解决方案或设置msbuild   消息传递项目文件中的项目参数为“true”。   [C:\构建\ 2 \服务\ PService \ SRC \ PService \测试\ PService.AcceptanceTest \ PService.AcceptanceTest.csproj]       13取代; C:\构建\ 2 \服务\ PService \ SRC \包\ SpecRun.Excel.1.1.0 \工具\ TechTalk.SpecFlow-buildfix.targets(47,5):   错误:找不到文件   'C:\用户\ tfsbuild \应用程序数据\本地\ TEMP \ tmpPWithData.feature.xlsx.cs'。   [C:\构建\ 2 \服务\ PService \ SRC \ PService \测试\ PService.AcceptanceTest \ PService.AcceptanceTest.csproj]       13取代; C:\构建\ 2 \服务\ PService \ SRC \ PService \测试\ PService.AcceptanceTest \功能\ PWithData.feature.xlsx   :错误:生成错误:找不到文件   'C:\用户\ tfsbuild \应用程序数据\本地\ TEMP \ tmpPWithData.feature.xlsx.cs'。   [C:\构建\ 2 \服务\ PService \ SRC \ PService \测试\ PService.AcceptanceTest \ PService.AcceptanceTest.csproj]

2 个答案:

答案 0 :(得分:1)

从源代码管理中删除HelloWorld.feature.cs

TFS会在构建期间将文件签出为只读,因此SpecFlow无法重新生成该文件,因为它已经存在且SpecFlow不会覆盖只读文件。

我为SpecFlow创建了一个新请求,不在此处自动将文件添加到源代码管理中:https://github.com/techtalk/SpecFlow/issues/592

答案 1 :(得分:0)

我不确定消息传递项目指的是什么,这是我之前从未见过的。

然而,该错误读起来好像问题是由*.feature.cs文件中生成*.feature的问题引起的,但我很困惑为什么这应该在构建服务器上发生。通常,在保存*.feature.cs文件时,IDE中会生成*.feature。这将被签入,并且对于某些版本控制系统(VCS),您最终可能会获得只读文件状态。

您的错误在构建服务器尝试重新生成*.feature.cs文件时读取,并且无法覆盖它。

要检查的一些事情;

  • 你在运行什么样的VCS?它是否将签入的文件保留为只读文件?
  • 如何在构建服务器上构建文件?是否涉及自定义步骤,还是仅仅是一个简单的编译?
  • 您是否可以通过将*.feature.cs设置为只读并在本地计算机上运行相同的构建脚本来在计算机上复制此错误?
祝你好运。