diff --git a/SharedProject/Core/MsTestPlatform/CodeCoverage/MsTemplateReplacementException.cs b/SharedProject/Core/MsTestPlatform/CodeCoverage/MsTemplateReplacementException.cs new file mode 100644 index 00000000..8d70cf67 --- /dev/null +++ b/SharedProject/Core/MsTestPlatform/CodeCoverage/MsTemplateReplacementException.cs @@ -0,0 +1,25 @@ +using System; +using System.Xml; + +namespace FineCodeCoverage.Engine.MsTestPlatform.CodeCoverage +{ + public class MsTemplateReplacementException : Exception + { + private XmlException innerException; + private string replacedRunSettingsTemplate; + public MsTemplateReplacementException(XmlException innerException, string replacedRunSettingsTemplate) + { + this.innerException = innerException; + this.replacedRunSettingsTemplate = replacedRunSettingsTemplate; + } + + public override string ToString() + { + return $@"${innerException} +Replaced template : +${replacedRunSettingsTemplate} +"; + } + + } +} diff --git a/SharedProject/Core/MsTestPlatform/CodeCoverage/RunSettingsTemplate.cs b/SharedProject/Core/MsTestPlatform/CodeCoverage/RunSettingsTemplate.cs index 91c54b8c..6f7c3468 100644 --- a/SharedProject/Core/MsTestPlatform/CodeCoverage/RunSettingsTemplate.cs +++ b/SharedProject/Core/MsTestPlatform/CodeCoverage/RunSettingsTemplate.cs @@ -2,11 +2,13 @@ using System; using System.Collections.Generic; using System.ComponentModel.Composition; +using System.Xml; using System.Xml.Linq; using System.Xml.XPath; namespace FineCodeCoverage.Engine.MsTestPlatform.CodeCoverage { + [Export(typeof(IRunSettingsTemplate))] internal class RunSettingsTemplate : IRunSettingsTemplate { @@ -186,7 +188,14 @@ bool isNetFramework private string AddRecommendedYouDoNotChangeElementsIfNotProvided(string replacedRunSettingsTemplate, bool isNetFramework) { - var templateDocument = XDocument.Parse(replacedRunSettingsTemplate); + XDocument templateDocument = null; + try + { + templateDocument = XDocument.Parse(replacedRunSettingsTemplate); + }catch(XmlException exc) + { + throw new MsTemplateReplacementException(exc, replacedRunSettingsTemplate); + } var msDataCollectorCodeCoverageElement = GetMsDataCollectorCodeCoverageElement(templateDocument); if (msDataCollectorCodeCoverageElement != null) { diff --git a/SharedProject/SharedProject.projitems b/SharedProject/SharedProject.projitems index caff195f..50362465 100644 --- a/SharedProject/SharedProject.projitems +++ b/SharedProject/SharedProject.projitems @@ -87,6 +87,7 @@ +