SpecFlow: #error Generation error: Could not load file or assembly ‘Microsoft.Build.Framework, Version=15.1.0.0…

Od pewnego czasu SpecFlow zaczął generować pliki testowe z zawartością:


#error Generation error: Could not load file or assembly 'Microsoft.Build.Framework, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.

Gdybyście dostali ten sam błąd (zakładam, że wszyscy którzy go mają, przyszli z Google/DuckDuckGo) i nie mogli go zwalczyć, to tu jest recepta na naprawę. Dopóki nie ma poprawki błędu w SpecFlow (2.2.1), to można błąd obejść w następujący sposób:

  1. Wyłącz autogenerowanie testów: Prawym na pliku(-ach) *.feature Properties > Custom Tool powinno być puste.

  2. Ustaw opcję generowania plików na etapie budowania. W pliku projektowym .csproj dodaj na końcu:

<Import Project="..\packages\SpecFlow.2.2.0\tools\TechTalk.SpecFlow.targets" Condition="Exists('..\packages\SpecFlow.2.2.0\tools\TechTalk.SpecFlow.targets')" />
  1. Ustaw opcję dodawania do projektu wygenerowanych plików automatycznie. W pliku projektowym .csproj dodaj na końcu:
<Target Name="AfterUpdateFeatureFilesInProject">
    <!-- include any files that specflow generated into the compilation of the project -->
    <ItemGroup>
        <Compile Include="@(SpecFlowGeneratedFiles)" />
    </ItemGroup>
</Target>

I tyle, powinno hulać! :)

Wiecej na temat generowania plików przez MsBuild: http://specflow.org/documentation/Generate-Tests-from-MsBuild/

Issue na GitHubie: https://github.com/techtalk/SpecFlow/issues/857