我一直在通过PSake自动化我的所有构建,并发现它对我的TeamCity构建更强大非常有用。
我想介绍的一件事是确保解决方案中的所有项目都有警告,因为错误设置为true。我发现一个没有这个项目的项目并不常见,但我现在正在研究一个不那么普遍的遗留代码库。
我希望能够快速检查设置是否已开启。 我猜测通过检查正确的文本会有办法(
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
)在。* proj文件中,但我希望可能有更清洁或更有效的方式。
有什么想法吗?
答案 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。