我們使用MSBuild運行一個項目,該項目通過社區任務中的XMLQuery任務從XML文件中讀取一些值包。它在MSBuild 3.5下運行良好,但在4.0下運行時失敗,並顯示以下消息:MSBuild 4.0在XMLQuery任務(來自MSBuild社區任務包)上失敗,出現錯誤MSB4018
錯誤MSB4018:「XmlQuery」任務意外失敗。 System.Xml.XmlException:名稱不能以'%'字符開頭,十六進制值爲0x25。在System.Xml.XmlTextReaderImpl.ParseQName(布爾isQName行1,位置2在 System.Xml.XmlTextReaderImpl.Throw(例外五) 在System.Xml.XmlTextReaderImpl.Throw(字符串RES,字串[] args) , INT32開始偏移,INT32 & colonPos) 在System.Xml.XmlTextReaderImpl.ParseElement() 在System.Xml.XmlTextReaderImpl.ParseDocumentContent() 在System.Xml.XmlTextReaderImpl.Read() 在System.Xml.XPath.XPathDocument。在MSBuild.Community.Tasks.Xml.XmlQuery上的MSBuild.Community.Tasks.Xml.XmlQuery.loadXmlContent() System.Xml.XPath.XPathDocument.ctor(TextReader textReader) 上的LoadFromReader(XmlReader reader,XmlSpace space) .Execute() 在Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() 在Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost,TaskLoggingContext taskLoggingContext,TaskHost taskHost,ItemBucket桶,TaskExecutionMode howToExecuteTask,布爾& taskResult)
用於從構建目標中調用的XMLQuery代碼:
<!-- Read XML report -->
<ReadLinesFromFile File="coverageXML\symbolmodule.xml">
<Output TaskParameter="Lines" ItemName="XmlReportLines" />
</ReadLinesFromFile>
<!-- Get number of visited sequence points -->
<XmlQuery Lines="@(XmlReportLines)" XPath="/trendcoveragedata/stats/@vsp">
<Output TaskParameter="Values" PropertyName="VisitedSequencePoints" />
</XmlQuery>
我只是不明白什麼是錯的。 XML文件非常有效,XMLQuery中指定的XPath應該返回一個值(並且始終有)。我無法在任何地方找到一個%字符。
我不知道如何以及從哪裏開始解決這個問題......任何正確的方向指針讚賞。
我注意到有可能使用Visual Studio 2010實際調試MSBuild項目,所以我會嘗試查看是否給出了更多信息 – Mels 2010-07-28 12:56:27