Tôi đang cố gắng để viết một số mã để đọc trong một tập tin * csproj sử dụng C#Đọc một tập tin * csproj trong C#
Mã tôi có là như sau
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(fullPathName);
XmlNamespaceManager mgr = new XmlNamespaceManager(xmldoc.NameTable);
//mgr.AddNamespace("x", "http://schemas.microsoft.com/developer/msbuild/2003");
foreach (XmlNode item in xmldoc.SelectNodes("//EmbeddedResource"))
{
string test = item.InnerText.ToString();
}
sử dụng trình gỡ lỗi tôi có thể thấy rằng 'fullPathName" có giá trị đúng và xmldoc lần nạp có các nội dung chính xác.
các xmldoc không có bất kỳ 'nút' Mặc dù vậy, như thể các nội dung không được công nhận là XML.
Sử dụng trình soạn thảo XML tệp * .csproj xác nhận hợp lệ một tài liệu XML.
Tôi sẽ làm gì sai?
Lớp Dự án Microsoft.Build.Engine hiện đang bị phản đối. Bất kỳ ý tưởng làm thế nào để làm tương đương với các lớp dự án từ Microsoft.Build.Evaluation (lắp ráp Microsoft.Build)? –
@ValeryLetroye, tôi đã không thử nó, nhưng tôi nghĩ rằng một cái gì đó giống như 'project.Items.Where (i => i.ItemType ==" EmbeddedResource ")' nên làm việc. –
Đây chính xác là những gì tôi đang tìm kiếm! Một cách tuyệt vời để tôn trọng tất cả các mục tiêu msbuild được tham chiếu và ghi đè của chúng! Đây sẽ là giải pháp tốt hơn từ góc độ kỹ thuật. – Chris