diff --git a/src/VisualStudio/IntegrationTest/TestUtilities/VisualStudioInstanceFactory.cs b/src/VisualStudio/IntegrationTest/TestUtilities/VisualStudioInstanceFactory.cs index f40079cc65c50913938804f9215881df11ea1b0f..6faed95e4d48246e4d371f92158fbc7e8755bea1 100644 --- a/src/VisualStudio/IntegrationTest/TestUtilities/VisualStudioInstanceFactory.cs +++ b/src/VisualStudio/IntegrationTest/TestUtilities/VisualStudioInstanceFactory.cs @@ -35,22 +35,18 @@ public sealed class VisualStudioInstanceFactory : IDisposable /// private static bool _firstLaunch = true; - static VisualStudioInstanceFactory() + public VisualStudioInstanceFactory() { - var majorVsProductVersion = VsProductVersion.Split('.')[0]; + AppDomain.CurrentDomain.AssemblyResolve += AssemblyResolveHandler; + AppDomain.CurrentDomain.FirstChanceException += FirstChanceExceptionHandler; + var majorVsProductVersion = VsProductVersion.Split('.')[0]; if (int.Parse(majorVsProductVersion) < 15) { throw new PlatformNotSupportedException("The Visual Studio Integration Test Framework is only supported on Visual Studio 15.0 and later."); } } - public VisualStudioInstanceFactory() - { - AppDomain.CurrentDomain.AssemblyResolve += AssemblyResolveHandler; - AppDomain.CurrentDomain.FirstChanceException += FirstChanceExceptionHandler; - } - private static void FirstChanceExceptionHandler(object sender, FirstChanceExceptionEventArgs eventArgs) { if (s_inHandler) @@ -77,7 +73,7 @@ private static void FirstChanceExceptionHandler(object sender, FirstChanceExcept baseFileName = $"{testName}-{eventArgs.Exception.GetType().Name}-{DateTime.Now:HH.mm.ss}"; } - ScreenshotService.TakeScreenshot(Path.Combine(logDir, $"{baseFileName}.png")); + Directory.CreateDirectory(logDir); var exception = eventArgs.Exception; File.WriteAllText( @@ -86,6 +82,8 @@ private static void FirstChanceExceptionHandler(object sender, FirstChanceExcept EventLogCollector.TryWriteDotNetEntriesToFile(Path.Combine(logDir, $"{baseFileName}.DotNet.log")); EventLogCollector.TryWriteWatsonEntriesToFile(Path.Combine(logDir, $"{baseFileName}.Watson.log")); + + ScreenshotService.TakeScreenshot(Path.Combine(logDir, $"{baseFileName}.png")); } finally {