【发布时间】:2018-01-21 17:41:24
【问题描述】:
我有一个应用程序需要解析 *.csproj 文件中的 ProjectReference 元素。它可以很好地使用旧的 (.net) 格式,我使用 Name 元素来获取项目的名称:
<ProjectReference Include="..\MyProject\MyProject.csproj">
<Project>{guid..}</Project>
<Name>MyProject</Name>
</ProjectReference>
然而,新格式 (.net-core) 使它现在崩溃,因为不再有 Name 元素。
我发现两个文件之间存在一些差异,但我不确定应该使用哪一个来说明我正在使用新的核心文件。区别在于:
- 新格式不包含xml声明
- 根元素以
<Project Sdk=属性开头,并且不包含任何默认命名空间,旧的命名空间已声明xmlns=" -
ProjectReference元素不包含任何子元素
像 Visual Studio 那样识别核心文件的最可靠方法是哪个属性?我是在正确的轨道上还是我应该使用任何其他标准来区分文件格式?
【问题讨论】:
-
为什么不直接从目标项目文件中取名字呢?这两种类型都适用。
-
@DavidG 是的,这肯定会起作用,我实际上可能会在以后实现它,但我仍然想知道如何正确识别新文件,以防我以后需要一些其他信息和在两个不同的模块中实现它。
-
在那种情况下,我可能会使用 Project Sdk。
-
SDK 还可用于从 VS 15.6+ 中的 NuGet 解析任意 MSBuild sdk,即使对于经典项目也是如此。
标签: .net .net-core c# .net xml visual-studio-2017 .net-core