MSBuild 4.0 Fehler auf XMLQuery Task (von MSBuild Community-Aufgaben-Paket) mit Fehlern MSB4018

StackOverflow https://stackoverflow.com/questions/3179475

Frage

Wir verwenden MSBuild ein Projekt zu starten, das, neben vielen anderen Dingen, liest einige Werte aus einer XML-Datei mit Hilfe der XMLQuery Aufgabe der Gemeinschaft Aufgaben-Paket. Es funktionierte gut unter MSBuild 3.5 aber, wenn sie unter 4.0 läuft nicht mit der folgenden Meldung:

Fehler MSB4018: Die "XMLQUERY" Aufgabe unerwartet fehlgeschlagen. System.Xml.XmlException: Der Name darf nicht mit dem Zeichen ‚%‘, Hexadezimalwert 0x25 beginnen. Zeile 1, Position 2. bei System.Xml.XmlTextReaderImpl.Throw (Exception e) bei System.Xml.XmlTextReaderImpl.Throw (String res, String [] args) bei System.Xml.XmlTextReaderImpl.ParseQName (Boolean isQName, Int32 startoffset, Int32 & colonPos) bei System.Xml.XmlTextReaderImpl.ParseElement () bei System.Xml.XmlTextReaderImpl.ParseDocumentContent () bei System.Xml.XmlTextReaderImpl.Read () bei System.Xml.XPath.XPathDocument.LoadFromReader (XmlReader reader, XmlSpace Raum) bei System.Xml.XPath.XPathDocument..ctor (Textreader Textreader) bei MSBuild.Community.Tasks.Xml.XmlQuery.loadXmlContent () bei MSBuild.Community.Tasks.Xml.XmlQuery.Execute () bei Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute () bei Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask (ITaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket Eimer, TaskExecutionMode howToExecuteTask, Boolean & taskResult)

Der Code zum Aufruf XMLQuery verwendet innerhalb eines Build-Ziel:

<!-- 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>

Ich kann einfach nicht verstehen, was falsch ist. Die XML-Datei ist vollkommen gültig und die XPath in der XMLQuery angegebenen sollte einen Wert zurückgeben (und hat immer). Ich kann nicht ein einzelnes Zeichen% überall .

finden

Ich bin nicht sicher, wie und wo Fehlerbehebung dieses Problems zu beginnen ... Jeder Zeiger in der richtigen Richtung geschätzt.

War es hilfreich?

Lösung

Readlinesfromfile jetzt (in MSBuild 4.0) gibt entkam Werte. Sie müssen sie unescape vor XMLQuery läuft. Wie folgt aus:

<!-- Read XML report -->
<ReadLinesFromFile File="coverageXML\symbolmodule.xml">
  <Output TaskParameter="Lines" ItemName="XmlReportLinesEscaped" />
</ReadLinesFromFile>
<ItemGroup>
<XmlReportLinesEscaped>
  <Escaped>%(XmlReportLinesEscaped.Identity)</Escaped>
  <Unescaped>$([MSBuild]::Unescape('%(XmlReportLinesEscaped.Identity)'))</Unescaped>
</XmlReportLinesEscaped>
</ItemGroup>
<ItemGroup>
  <XmlReportLines Include="@(XmlReportLinesEscaped->'%(Unescaped)')"></XmlReportLines >
</ItemGroup>
<!-- Get number of visited sequence points -->
<XmlQuery Lines="@(XmlReportLines)" XPath="/trendcoveragedata/stats/@vsp">
  <Output TaskParameter="Values" PropertyName="VisitedSequencePoints" />
</XmlQuery>

Should Arbeit.

Greg.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top