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