diff --git a/src/DataCollectors/TraceDataCollector/VanguardCollector/DynamicCoverageDataCollectorImpl.cs b/src/DataCollectors/TraceDataCollector/VanguardCollector/DynamicCoverageDataCollectorImpl.cs
index 40a8a9a38f..6d0e0b56ee 100644
--- a/src/DataCollectors/TraceDataCollector/VanguardCollector/DynamicCoverageDataCollectorImpl.cs
+++ b/src/DataCollectors/TraceDataCollector/VanguardCollector/DynamicCoverageDataCollectorImpl.cs
@@ -112,8 +112,14 @@ public virtual void Initialize(
try
{
- var processor = new CodeCoverageRunSettingsProcessor(defaultConfigurationElement);
- configurationElement = (XmlElement)processor.Process(configurationElement);
+ // WARNING: Do NOT remove this function call !!!
+ //
+ // Due to a dependency we took on Microsoft.TestPlatform.Utilities.dll, an
+ // exception may be thrown if we cannot resolve CodeCoverageRunSettingsProcessor.
+ // If such an exception is thrown we cannot catch it in this try-catch block
+ // because all method dependencies must be resolved before the method call, thus
+ // we introduced an additional layer of indirection.
+ configurationElement = this.AddDefaultExclusions(configurationElement, defaultConfigurationElement);
}
catch (Exception ex)
{
@@ -326,5 +332,17 @@ private void CreateDirectory(DataCollectionContext context, string path)
throw;
}
}
+
+ ///
+ /// Adding default exclusions to the configuration element.
+ ///
+ /// The configuration element.
+ /// The default configuration element.
+ /// The original configuration element with additional default exclusions.
+ private XmlElement AddDefaultExclusions(XmlElement configurationElement, XmlElement defaultConfigurationElement)
+ {
+ var processor = new CodeCoverageRunSettingsProcessor(defaultConfigurationElement);
+ return (XmlElement)processor.Process(configurationElement);
+ }
}
}
\ No newline at end of file