SpecFlow 项目加载失败

SpecFlow project load failed

我有一个基于 SpecFlow 的测试项目。有时会出现一个问题,即工作源代码(在其他计算机和构建服务器上工作)无法在 Visual Studio 2015 中加载,解决方案资源管理器中的信息 load failed 以及输出控制台上的以下错误消息:

C:\Project\Tests.csproj : error : The imported project "C:\Project\packages\SpecFlow.2.1.0\tools\TechTalk.SpecFlow.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk. C:\Project\Tests.csproj

项目使用:

原来是项目文件 (csproj) 的问题。它是用 TechTalk.SpecFlow.targets 手动扩展的,如下所示:

<Import Project="..\packages\SpecFlow.2.1.0\tools\TechTalk.SpecFlow.targets" />

但是当清理目录时(例如通过 git 硬重置),没有包,所以无法加载项目来执行 nuget 恢复。

解决方案是使用条件 Exists 扩展 Import

<Import Project="..\packages\SpecFlow.2.1.0\tools\TechTalk.SpecFlow.targets" 
    Condition="Exists('..\packages\SpecFlow.2.1.0\tools\TechTalk.SpecFlow.targets')" />