2010-06-05 2 views
1

우리는 VS에서 자체 빌드를 사용할 수 있도록 makefileproj 키워드로 vcproj 파일을 생성합니다. 내 질문은 당신이 읽고 어떻게, C#을 사용한다 "C++를"다음 vcproj 파일에서 : 내가있는 XmlNode를 사용하고 두 번째 플랫폼 개까지 가지고C에서 # .vcproj 파일 읽기

<?xml version="1.0" encoding="Windows-1252"?> 
<VisualStudioProject 
ProjectType="Visual C++" 
Version="8.00" 
Name="TestCSProj" 
ProjectGUID="{840501C9-6AFE-8CD6-1146-84208624C0B0}" 
RootNamespace="TestCSProj" 
Keyword="MakeFileProj" 
> 
<Platforms> 
    <Platform 
    Name="x64" 
    /> 
    <Platform 
    Name="C++"  ===> I need to read "C++" 
    /> 
</Platforms> 

:

String path = "C:\\blah\\TestCSProj\\TestCSProj\\TestCSProj.vcproj"; 
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); 
XmlDocument xmldoc = new XmlDocument(); 
xmldoc.Load(fs); 
XmlNodeList oldFiles = xmldoc.GetElementsByTagName("Platform"); 
XmlAttribute name = oldFiles[1].Attributes[0]; 
Console.WriteLine(name.Name); 

이 이름을 인쇄합니다, 하지만 "C++"이 필요합니다. 어떻게 읽습니까?

사전

+0

왜 간단하게 디버깅하지 말고, console.WriteLine() 라인에 중단 점을 배치하고 이름을 마우스로 가리 키십시오 ... 당신은 가질 수있는 모든 속성을 볼 수 있습니다. 출력으로 쉽게 찾을 수 있습니다 "C++"... – balexandre

+0

.vcproj가 VS2010에 더 이상 존재하지 않는다는 것을 알고 계십니까? –

+0

정말요? VS2010 용 vcproj 파일이 없습니까? 그래서 다른 파일로 대체하거나 vcproj 파일을 모두 제거합니까? – Dula

답변

0

사용 name.Value에 대단히 감사드립니다.

+0

그래, 그게 너무 작동합니다. 나는 그것이 다음과 같은 오류를 제공 그렇게 할 때 당신에게 – Dula

1

당신은 Value 속성과 속성의 값에 액세스 할 수 있습니다,

Console.WriteLine(name.Value); 

심지어 더 짧고 더 신뢰할 대신 색인의 이름으로 그것을 얻을 :

Console.WriteLine(((XmlElement)oldFiles[1]).GetAttribute("Name")); 

GetAttribute 메서드는 값을 문자열로 직접 반환합니다.

+0

감사합니다 : Error1 'System.Xml.XmlNode'는 'getAttribute를'\t 에 대한 정의를 포함하지 않는 그러나 나는 다음과 같은 코드가 작동 찾을 않았다 Console.WriteLine (name.InnerText); – Dula

+0

@Dulantha : Hum. Attributes 컬렉션을 사용할 수 있지만 GetAttribute가 아닌 것 같습니다. 그거 이상 하네. 필요한 코드를 추가하기 위해 코드를 수정했습니다. –