diff --git a/README.md b/README.md index d4be19b..4f9f377 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,10 @@ This is an open source project, join! Twitter: @GanzhaVitalii +Version 1.9: +* Fixed defect #8: VS 2015 stops working when looking at Test Manager Window + + Version 1.8: * Users now will be able to select their own sounds (Issue #5) * There will be a different sound when any of the tests have failed (Issue #7) diff --git a/VsDingExtensionProject/VsDingExtensionProject.csproj b/VsDingExtensionProject/VsDingExtensionProject.csproj index 782b15e..475afb6 100644 --- a/VsDingExtensionProject/VsDingExtensionProject.csproj +++ b/VsDingExtensionProject/VsDingExtensionProject.csproj @@ -5,11 +5,6 @@ 12.0 $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - - - - - 12.0 Program $(DevEnvDir)\devenv.exe /rootsuffix Exp @@ -66,11 +61,13 @@ true - + $(DevEnvDir)\CommonExtensions\Microsoft\TestWindow\Microsoft.VisualStudio.TestWindow.Interfaces.dll + False @@ -218,10 +215,7 @@ - - Always - true - + Always diff --git a/VsDingExtensionProject/VsDingExtensionProjectPackage.cs b/VsDingExtensionProject/VsDingExtensionProjectPackage.cs index 60bfb9e..bdca97d 100644 --- a/VsDingExtensionProject/VsDingExtensionProjectPackage.cs +++ b/VsDingExtensionProject/VsDingExtensionProjectPackage.cs @@ -10,7 +10,6 @@ namespace VitaliiGanzha.VsDingExtension using EnvDTE80; using Microsoft.VisualStudio.ComponentModelHost; using Microsoft.VisualStudio.Shell; - using Microsoft.VisualStudio.TestWindow.Controller; using Microsoft.VisualStudio.TestWindow.Extensibility; using Task = System.Threading.Tasks.Task; @@ -161,16 +160,30 @@ namespace VitaliiGanzha.VsDingExtension { if (Options.IsBeepOnTestComplete && operationStateChangedEventArgs.State.HasFlag(TestOperationStates.TestExecutionFinished)) { - var testOperation = ((TestRunRequest)operationStateChangedEventArgs.Operation); - var isTestsFailed = testOperation.DominantTestState == TestState.Failed; - var eventType = isTestsFailed? EventType.TestsCompletedFailure : EventType.TestsCompletedSuccess; - if (Options.IsBeepOnTestFailed && isTestsFailed) + try { - HandleEventSafe(eventType, "Test execution failed!", ToolTipIcon.Error); + // Issue #8: VS 2015 stops working when looking at Test Manager Window #8 + // This extention can't take dependency on Microsoft.VisualStudio.TestWindow.Core.dll + // Because it will crash VS 2015. But DominantTestState is defined in that assembly. + // So as a workaround - cast it to dynamic (ewww, but alternative - to create new project/build and publish it separately.) + var testOperation = (dynamic)(operationStateChangedEventArgs.Operation); + var dominantTestState = (TestState)testOperation.DominantTestState; + var isTestsFailed = dominantTestState == TestState.Failed; + var eventType = isTestsFailed ? EventType.TestsCompletedFailure : EventType.TestsCompletedSuccess; + if (Options.IsBeepOnTestFailed && isTestsFailed) + { + HandleEventSafe(eventType, "Test execution failed!", ToolTipIcon.Error); + } + else + { + HandleEventSafe(eventType, "Test execution has been completed."); + } } - else + catch (Exception ex) { - HandleEventSafe(eventType, "Test execution has been completed."); + ActivityLog.LogError(GetType().FullName, ex.Message); + // Unable to get dominate test status, beep default sound for test + HandleEventSafe(EventType.TestsCompletedSuccess, "Test execution has been completed."); } } } diff --git a/VsDingExtensionProject/source.extension.vsixmanifest b/VsDingExtensionProject/source.extension.vsixmanifest index 5c1538c..6e18dfa 100644 --- a/VsDingExtensionProject/source.extension.vsixmanifest +++ b/VsDingExtensionProject/source.extension.vsixmanifest @@ -1,7 +1,7 @@  - + Visual Studio Ding extension This small extension will play notification sounds when following events occur: - Build Complete