sdk项目中的Msbuild 15引发错误:无法识别元素<when>下的元素<import>

时间:2019-01-12 07:48:08

标签: c# msbuild visual-studio-2017

在vs2017和msbuild 15中使用SDK样式的C#项目中,我尝试使用以下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 :(得分:1)

回答从字面上提出的问题:此代码有什么问题?

答案是此代码不符合MSBuild文件架构。

根据MSBuild Schema导入不是何时否则的允许子级。仅允许 PropertyGroup ItemGroup Choose

现在,如果您实际上要问的是“如何有条件地导入项目?”,然后发布该问题。