.net 如何确定xml文件是否为有效的msbuild生成文件?

.net 如何确定xml文件是否为有效的msbuild生成文件?,.net,msbuild,.net,Msbuild,如何从可能包含许多xml文件的目录中确定文件是否为有效的msbuild文件?我正在读取目录中的所有文件,使用BeautifulSoup解析它们,确定它们是否有project元素,以及itemgroup、target或compile元素,但这种方法返回了许多误报。有没有可能使这一点更加严格?对于初学者来说,您应该为msbuild文件使用标准命名约定。业界使用,*.vcxproj、*.csproj、*.vbproj(等),*.targets、*.props、*.proj(有时),甚至更少使用*.xm

如何从可能包含许多xml文件的目录中确定文件是否为有效的msbuild文件?我正在读取目录中的所有文件,使用BeautifulSoup解析它们,确定它们是否有project元素,以及itemgroup、target或compile元素,但这种方法返回了许多误报。有没有可能使这一点更加严格?

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

其次,应该使用msbuild项目API为您完成所有繁重的猜测工作。不要重新发明轮子:

使用该选项,可以使用Project类加载msbuild文件,如下所示:

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

然后捕获一个异常,如果它不是msbuild文件。

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

其次,应该使用msbuild项目API为您完成所有繁重的猜测工作。不要重新发明轮子:

使用该选项,可以使用Project类加载msbuild文件,如下所示:

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

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

您可能只能使用msbuild API加载XML文件,并查看是否发生异常,@LexLi目录中可能有大量包含元素项目的XML文件。有没有其他方法可以在本地确定这一点?为什么您不能进行一些迭代?@LexLi,因为进行大量API请求将非常耗时。我需要对许多目录执行此操作。此处无法兼顾准确性和效率。您可能只能使用MSBuild API加载XML文件,并查看是否发生任何异常,@LexLi目录中可能有许多包含元素项目的XML文件。有没有其他方法可以在本地确定这一点?为什么您不能进行一些迭代?@LexLi,因为进行大量API请求将非常耗时。我需要为许多目录这样做。准确性和效率不能在这里结合在一起。