Я пытаюсь вытащить узел из файла csproj, который выглядит так, но не может заставить его работать - по-видимому, из-за объявления пространства имен.с помощью XElement для запроса узла в пространстве имен
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
<PropertyGroup>
<RegisterForComInterop>true</RegisterForComInterop>
Это с треском проваливается:
XDocument cpo = XDocument.Load(file);
XmlNamespaceManager nsm = new XmlNamespaceManager(new NameTable());
nsm.AddNamespace("x", "http://schemas.microsoft.com/developer/msbuild/200");
IEnumerable<XElement> list3 = cpo.XPathSelectElements("//x:RegisterForComInterop[.='true']", nsm);
Любой какие-либо идеи, пожалуйста?
Спасибо.
Я бы заменил последнюю строку на '.Where (x => bool.Parse (x.Value))', так как мы на 100% ожидаем булевскую строку (иначе мы ожидаем и исключение ..). – Shimmy
И для пакетных исполнений этот выбор стоит меньше накладных расходов. – Shimmy
@Shimmy: Я бы не использовал bool.Parse здесь - я бы использовал явное преобразование в 'bool', который знает о XML. Будет редактировать. –