Как решить ошибку MSB4041 (VS2017, C #, MSBuild, SpecFlow.Tools.MsBuild.Generation, SpecRun)? - PullRequest
0 голосов
/ 08 июля 2019

У меня есть набор тестов автоматизации, пытающийся использовать SpecRun для параллельного запуска тестов. Похоже, что вместо того, чтобы запускать тесты в Test Explorer, мне нужно вместо этого запускать их, используя предоставленный файл runtests.cmd ...

@pushd %~dp0

@where /q msbuild

@IF ERRORLEVEL 1 (
    echo "MSBuild is not in your PATH. Please use a developer command prompt!"
    goto :end
) ELSE (
    MSBuild.exe "C:\Users\me\source\repos\OurAutomation\src\OurAutomation.csproj"
)

@if ERRORLEVEL 1 goto end

@cd ..\packages\SpecRun.Runner.*\tools\net45

@set profile=%1
@if "%profile%" == "" set profile=Default

@if exist "%~dp0\bin\Debug\%profile%.srprofile" (
    SpecRun.exe run "%profile%.srprofile" --baseFolder "%~dp0\bin\Debug" --log "specrun.log" %2 %3 %4 %5
) else (
    SpecRun.exe run --baseFolder "%~dp0\bin\Debug" --log "specrun.log" %2 %3 %4 %5
)

:end

@popd

pause

... оператор pause - это то, что я добавил, чтобы консоль оставалась открытой для просмотра ошибок.

Ошибки:

Microsoft (R) Build Engine version 4.7.3056.0
[Microsoft .NET Framework, version 4.0.30319.42000]
Copyright (C) Microsoft Corporation. All rights reserved.

Build started 08/07/2019 11:15:06.
Project "C:\Users\me\source\repos\OurAutomation\src\OurAutomation.csproj" on node 1 (defau
lt targets).
C:\Users\me\source\repos\OurAutomation\src\packages\SpecFlow.Tools.MsBuild.Generation.3.0.220\build\Sp
ecFlow.Tools.MsBuild.Generation.props(1,1): error MSB4041: The default XML namespace of the project must be the MSBuild
 XML namespace. If the project is authored in the MSBuild 2003 format, please add xmlns="http://schemas.microsoft.com/d
eveloper/msbuild/2003" to the <Project> element. If the project has been authored in the old 1.0 or 1.2 format, please
convert it to MSBuild 2003 format. [C:\Users\me\source\repos\OurAutomation\src\OurAutomati
on.csproj]
Done Building Project "C:\Users\me\source\repos\OurAutomation\src\OurAutomation.csproj" (d
efault targets) -- FAILED.


Build FAILED.

"C:\Users\me\source\repos\OurAutomation\src\OurAutomation.csproj" (default target) (1) ->
  C:\Users\me\source\repos\OurAutomation\src\packages\SpecFlow.Tools.MsBuild.Generation.3.0.220\build\
SpecFlow.Tools.MsBuild.Generation.props(1,1): error MSB4041: The default XML namespace of the project must be the MSBui
ld XML namespace. If the project is authored in the MSBuild 2003 format, please add xmlns="http://schemas.microsoft.com
/developer/msbuild/2003" to the <Project> element. If the project has been authored in the old 1.0 or 1.2 format, pleas
e convert it to MSBuild 2003 format. [C:\Users\me\source\repos\OurAutomation\src\OurAutoma
tion.csproj]

    0 Warning(s)
    1 Error(s)

Time Elapsed 00:00:00.02

Я установил переменную системной среды PATH для поиска MSBuild.exe в C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 (это моя последняя версия).

Я попытался сделать, как предложено, и обнаружил, что файлы OurAutomation.csproj и OurAutomation.csproj.user уже имеют:

<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

Так что это простое исправление - никакого исправления вообще, потому что тег Project уже имеет обязательный атрибут и значение!

Я был на нескольких сайтах в поисках альтернативного решения. Другие говорят, что у них была эта проблема при обновлении с VS2015 до 2017 года (они перешли с использования project.json на * .csproj). Однако я не обновился. Я создал свой проект в VS2017. Целевая среда: .NET Framework 4.7.2, Тип вывода: Библиотека классов.

Не уверен, что SpecFlow.Tools.MsBuild.Generation вносит конфликт здесь, но он мне нужен.

Пожалуйста, вы знаете, как мне исправить это? Кончаются идеи.

Спасибо.

1 Ответ

0 голосов
/ 08 июля 2019

Ответ Павла Аниховского был решением, спасибо!

"Начиная с VisualStudio 2015 MSBuild предоставляется как часть IDE (или инструментов сборки), вам следует использовать эту версию, например, c: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ 15.0 \ Bin \».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...