0

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

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

我希望能够快速检查设置是否打开。我猜有一种方法可以检查正确的文本(

<TreatWarningsAsErrors>true</TreatWarningsAsErrors>

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

有任何想法吗?

4

1 回答 1

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..
    }
}

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

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

HTH。

于 2012-03-08T23:01:45.420 回答