检查项目是否有警告为错误

时间:2012-03-08 15:12:08

标签: .net msbuild psake

我一直在通过PSake自动化我的所有构建,并发现它对我的TeamCity构建更强大非常有用。

我想介绍的一件事是确保解决方案中的所有项目都有警告,因为错误设置为true。我发现一个没有这个项目的项目并不常见,但我现在正在研究一个不那么普遍的遗留代码库。

我希望能够快速检查设置是否已开启。 我猜测通过检查正确的文本会有办法(

<TreatWarningsAsErrors>true</TreatWarningsAsErrors>

)在。* proj文件中,但我希望可能有更清洁或更有效的方式。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我不明白探测。* 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..
    }
}

在您的问题域中有一点是你可能有项目文件,它为一个配置打开了标志(例如调试),但是你无法判断它是否存在于其他配置中配置。

实际上,您可以扩展上面的代码并遍历所有配置并查找每个配置的标志。此外 - 如果配置不存在,或者设置为“false” - 您可以只是操作XML文档并动态插入/修复所有这些问题。

HTH。