告诉* .csproj格式分开

时间:2018-01-21 17:41:24

标签: c# .net xml visual-studio-2017 .net-core

我的应用程序需要解析ProjectReference个文件中的*.csproj个元素。它可以使用旧的{)格式很好地完成此操作,我使用Name元素来获取项目的名称:

<ProjectReference Include="..\MyProject\MyProject.csproj">
  <Project>{guid..}</Project>
  <Name>MyProject</Name>
</ProjectReference>

然而,新格式()使其崩溃,因为不再有Name元素。

我发现两个文件之间存在一些差异,但我不确定应该使用哪一个告诉我我正在使用新的核心文件。不同之处是:

  • 新格式不包含xml声明
  • 根元素以<Project Sdk=属性开头,并且不包含任何默认命名空间,而旧的命名空间已声明xmlns="
  • ProjectReference元素不包含任何子项

哪个属性是识别像Visual Studio这样的核心文件最可靠的方法呢?我是在正确的轨道上还是我还应该使用其他任何标准来区分文件格式?

1 个答案:

答案 0 :(得分:2)

如果您使用MSBuild评估项目文件,则sdk会将UsingMicrosoftNETSdk属性设置为true

如果您只使用基于XML的工具来阅读文件,则可以检查<TargetFramework><TargetFrameworks>(复数)属性(<PropertyGroup>内)。

这与visual studio用于确定新项目系统或经典项目系统是否用于项目的机制相同(请参阅Opening With CPS文档)。