diff --git a/src/Microsoft.TestPlatform.Common/Utilities/FakesUtilities.cs b/src/Microsoft.TestPlatform.Common/Utilities/FakesUtilities.cs index 8fe900e028..8c24158902 100644 --- a/src/Microsoft.TestPlatform.Common/Utilities/FakesUtilities.cs +++ b/src/Microsoft.TestPlatform.Common/Utilities/FakesUtilities.cs @@ -52,17 +52,44 @@ public static string GenerateFakesSettingsForRunConfiguration(string[] sources, doc.Load(xmlReader); } - return !TryAddFakesDataCollectorSettings(doc, sources, GetFramework(runSettingsXml)) - ? runSettingsXml - : doc.OuterXml; + var frameworkVersion = GetFramework(runSettingsXml); + if (frameworkVersion == null) + { + return runSettingsXml; + } + + return TryAddFakesDataCollectorSettings(doc, sources, (FrameworkVersion)frameworkVersion) + ? doc.OuterXml + : runSettingsXml; } - private static FrameworkVersion GetFramework(string runSettingsXml) + /// + /// returns FrameworkVersion contained in the runsettingsXML + /// + /// + /// + private static FrameworkVersion? GetFramework(string runSettingsXml) { - var config = XmlRunSettingsUtilities.GetRunConfigurationNode(runSettingsXml); -#pragma warning disable CS0618 // Type or member is obsolete - return config.TargetFrameworkVersion; -#pragma warning restore CS0618 // Type or member is obsolete + // We assume that only .NET Core, .NET Standard, or .NET Framework projects can have fakes. + var targetFramework = XmlRunSettingsUtilities.GetRunConfigurationNode(runSettingsXml)?.TargetFramework; + + if (targetFramework == null) + { + return null; + } + + // Since there are no FrameworkVersion values for .Net Core 2.0 +, we check TargetFramework instead + // and default to FrameworkCore10 for .Net Core + if (targetFramework.Name.IndexOf("netstandard", StringComparison.OrdinalIgnoreCase) >= 0 || + targetFramework.Name.IndexOf("netcoreapp", StringComparison.OrdinalIgnoreCase) >= 0) + { + return FrameworkVersion.FrameworkCore10; + } + + // Since the Datacollector is separated on the NetFramework/NetCore line, any value of NETFramework + // can be passed along to the fakes data collector configuration creator. + // We default to Framework40 to preserve back compat + return FrameworkVersion.Framework40; } ///