【问题标题】:How can I determine if an xml file is a valid msbuild build file?如何确定 xml 文件是否是有效的 msbuild 构建文件?
【发布时间】:2019-05-16 15:08:04
【问题描述】:

如何确定一个文件是否是一个目录中的有效 msbuild 文件,该目录可能包含许多 xml 文件?我正在读取目录中的所有文件,使用 BeautifulSoup 解析它们,确定它们是否有项目元素,以及 itemgrouptargetcompile 元素,但这种方法会返回许多误报。是否有可能使这个更严格?

【问题讨论】:

  • 你可能只能使用MSBuild API来加载XML文件,看看有没有异常,docs.microsoft.com/en-us/dotnet/api/…
  • @LexLi 该目录可能有很多xml文件,其中包含元素项目。还有其他方法可以在本地确定吗?
  • 为什么不能做一些迭代?
  • @LexLi 因为发出大量 API 请求会非常耗时。我需要为许多目录执行此操作。
  • 准确性和效率在这里无法兼顾。

标签: .net msbuild


【解决方案1】:

对于初学者来说,您应该对 msbuild 文件使用标准命名约定。业界使用,*.vcxproj、*.csproj、*.vbproj、(等)、*.targets、*.props、*.proj(有时),甚至更少*.xml。

其次,您应该使用 msbuild 项目 API 为您完成所有繁重的猜测工作。不要重新发明轮子: https://docs.microsoft.com/en-us/dotnet/api/microsoft.build.evaluation.project?view=netframework-4.8

使用它,您可以使用 Project 类来加载 msbuild 文件,如下所示:

var p = new Microsoft.Build.Evaluation.Project("C:\somefile.targets");

如果不是 msbuild 文件,则捕获异常。

【讨论】:

    猜你喜欢
    • 2010-12-19
    • 2010-12-01
    • 2014-12-26
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2010-10-30
    相关资源
    最近更新 更多