当我一起使用以下导入时:
<Import Project="$(SlowCheetahTargets)" Condition="Exists('$(SlowCheetahTargets)')" Label="SlowCheetah" />
<Import Project="$(SolutionDir)\packages\SpecFlow.1.9.0\tools\TechTalk.SpecFlow.targets" Condition="Exists('$(SolutionDir)\packages\SpecFlow.1.9.0')" />
我收到了这个构建错误:
元素&lt; Import&gt;中的属性“Label”无法识别
我可以从第一个Import元素中删除Label属性,或者完全删除第二个import元素以消除错误。
有人可以解释发生了什么吗?看起来第二个目标文件的内容正在改变正在使用的MSBuild的版本...不知何故。
注意:您可以通过将SlowCheetah和Specflow NuGet包添加到项目中来获得这些目标。
答案 0 :(得分:2)
虽然表现为MsBuild错误,但这确实是SpecFlow的问题(检查完整错误,行号指向TechTalk.SpecFlow.targets,它调用从TechTalk.SpecFlow中的specflow.exe导入的GenerateAll任务。任务):SpecFlow的NuGet包的dll是针对.Net35构建的,它不支持Label
上的PropertyGroup
属性。因此,当你传递一个项目文件时,就像你的那样,碰巧包含这样的标签某个地方的specflow失败了。
SpecFlow声称可以使用.Net40,因此您可以自己从源代码构建针对.Net40的NuGet包,然后使用它而不是在线版本。或者用SpecFlow提出支持票:毕竟.Net35已经很老了。