在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.
此代码有什么问题?
答案 0 :(得分:1)
回答从字面上提出的问题:此代码有什么问题?
答案是此代码不符合MSBuild文件架构。
根据MSBuild Schema,导入不是何时或否则的允许子级。仅允许 PropertyGroup , ItemGroup 和 Choose 。
现在,如果您实际上要问的是“如何有条件地导入项目?”,然后发布该问题。