Msbuild 15 в проекте SDK выдает ошибку: элемент <Import>под элементом <When>не распознан - PullRequest
0 голосов
/ 12 января 2019

В проекте C # с использованием стиля SDK в vs2017 и msbuild 15 я пытаюсь импортировать проект на основе условия, используя следующий фрагмент XML:

   <Project Sdk="Microsoft.NET.Sdk">
       <!--No <TargetFramework> element is defined, it's imported with Import Project element-->

     <Choose>
        <When Condition="$(PackId) == 'xyz'">
          <!-- it has <TargetFramework> element net45 -->
          <Import Project="$(MSBuildThisFileDirectory)projectxyz.props"/>    
        </When>
        <Otherwise>
          <!-- it has <TargetFramework> element netcoreapp2.0-->
          <Import Project="$(MSBuildThisFileDirectory)projectAbc.props"/>
        </Otherwise>
      </Choose>

   </Project>

Vs2017 не удалось загрузить проект с ошибками:

    error  : The element <Import> beneath element <When> is unrecognized.   
    error  : The element <Import> beneath element <Otherwise> is unrecognized.  

Что не так с этим кодом?

1 Ответ

0 голосов
/ 20 марта 2019

Отвечая на вопрос, который был буквально задан: Что не так с этим кодом?

Ответ заключается в том, что этот код не соответствует схеме файла MSBuild.

В соответствии со схемой MSBuild , Импорт не является допустимым дочерним элементом для , когда или В противном случае . Только PropertyGroup , ItemGroup и Выбор разрешен.

Теперь, если вы на самом деле пытались спросить: «Как мне условно импортировать проект?», Тогда опубликуйте этот вопрос.

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