我不明白探测 .*proj 文件有什么问题,所以我假设您不想只搜索整个字符串文字。
项目文件是基于 XML 的,所以这里有一个 Linq to XML 代码片段,可以让您找到您要查找的内容:
void VerifyTreatWarningsAsErrorsIsOn( string projFilename )
{
XNamespace xmlns = "http://schemas.microsoft.com/developer/msbuild/2003";
var twaeList = XDocument.Load( projFilename ).Descendants( xmlns + "TreatWarningsAsErrors" ).ToList();
if ( twaeList.Count() > 0 )
{
var falseValues = twaeList.Where( x => x.Value == "true" );
if ( falseValues.Count() > 0 )
{
// Not good..
}
}
else
{
// None exist.. not good either..
}
}
在您的问题域中有点偏离的一件事是您可能有项目文件,这些文件为一个配置(例如调试)打开了标志,但您无法判断它是否存在于其他配置中。
所以实际上,您可以扩展上述代码并遍历所有配置并查找每个配置的标志。此外 - 如果配置不存在,或者设置为“假” - 您可以操作 XML 文档并即时插入/修复所有这些问题。
HTH。