Finished version for Visual Studio 2013, about to publish
This commit is contained in:
		
							parent
							
								
									c02e906621
								
							
						
					
					
						commit
						80c0dc84da
					
				
					 11 changed files with 79 additions and 68 deletions
				
			
		|  | @ -1,8 +1,9 @@ | |||
| // Guids.cs | ||||
| // MUST match guids.h | ||||
| 
 | ||||
| using System; | ||||
| 
 | ||||
| namespace VitaliiGanzha.VsDingExtensionProject | ||||
| namespace VitaliiGanzha.VsDingExtension | ||||
| { | ||||
|     static class GuidList | ||||
|     { | ||||
|  |  | |||
|  | @ -29,8 +29,6 @@ using System.Runtime.InteropServices; | |||
| // You can specify all the values or you can default the Revision and Build Numbers  | ||||
| // by using the '*' as shown below: | ||||
| 
 | ||||
| [assembly: AssemblyVersion("1.0.0.0")] | ||||
| [assembly: AssemblyFileVersion("1.0.0.0")] | ||||
| 
 | ||||
| [assembly: AssemblyVersion("1.0.*")] | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										22
									
								
								VsDingExtensionProject/Resources.Designer.cs
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										22
									
								
								VsDingExtensionProject/Resources.Designer.cs
									
										
									
										generated
									
									
									
								
							|  | @ -8,7 +8,7 @@ | |||
| // </auto-generated> | ||||
| //------------------------------------------------------------------------------ | ||||
| 
 | ||||
| namespace VitaliiGanzha.VsDingExtensionProject { | ||||
| namespace VitaliiGanzha.VsDingExtension { | ||||
|     using System; | ||||
|      | ||||
|      | ||||
|  | @ -39,7 +39,7 @@ namespace VitaliiGanzha.VsDingExtensionProject { | |||
|         internal static global::System.Resources.ResourceManager ResourceManager { | ||||
|             get { | ||||
|                 if (object.ReferenceEquals(resourceMan, null)) { | ||||
|                     global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("VitaliiGanzha.VsDingExtensionProject.Resources", typeof(Resources).Assembly); | ||||
|                     global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("VitaliiGanzha.VsDingExtension.Resources", typeof(Resources).Assembly); | ||||
|                     resourceMan = temp; | ||||
|                 } | ||||
|                 return resourceMan; | ||||
|  | @ -60,6 +60,24 @@ namespace VitaliiGanzha.VsDingExtensionProject { | |||
|             } | ||||
|         } | ||||
|          | ||||
|         /// <summary> | ||||
|         ///   Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream. | ||||
|         /// </summary> | ||||
|         internal static System.IO.UnmanagedMemoryStream build { | ||||
|             get { | ||||
|                 return ResourceManager.GetStream("build", resourceCulture); | ||||
|             } | ||||
|         } | ||||
|          | ||||
|         /// <summary> | ||||
|         ///   Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream. | ||||
|         /// </summary> | ||||
|         internal static System.IO.UnmanagedMemoryStream debug { | ||||
|             get { | ||||
|                 return ResourceManager.GetStream("debug", resourceCulture); | ||||
|             } | ||||
|         } | ||||
|          | ||||
|         /// <summary> | ||||
|         ///   Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream. | ||||
|         /// </summary> | ||||
|  |  | |||
|  | @ -118,6 +118,12 @@ | |||
|     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | ||||
|   </resheader> | ||||
|   <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> | ||||
|   <data name="build" type="System.Resources.ResXFileRef, System.Windows.Forms"> | ||||
|     <value>Resources\build.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | ||||
|   </data> | ||||
|   <data name="debug" type="System.Resources.ResXFileRef, System.Windows.Forms"> | ||||
|     <value>Resources\debug.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | ||||
|   </data> | ||||
|   <data name="ding" type="System.Resources.ResXFileRef, System.Windows.Forms"> | ||||
|     <value>Resources\ding.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | ||||
|   </data> | ||||
|  |  | |||
							
								
								
									
										
											BIN
										
									
								
								VsDingExtensionProject/Resources/build.wav
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								VsDingExtensionProject/Resources/build.wav
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								VsDingExtensionProject/Resources/debug.wav
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								VsDingExtensionProject/Resources/debug.wav
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								VsDingExtensionProject/Resources/speaker.ico
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								VsDingExtensionProject/Resources/speaker.ico
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 66 KiB | 
|  | @ -4,6 +4,10 @@ | |||
|     <MinimumVisualStudioVersion>12.0</MinimumVisualStudioVersion> | ||||
|     <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">12.0</VisualStudioVersion> | ||||
|     <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> | ||||
|     <TargetFrameworkProfile /> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup> | ||||
|     <ApplicationIcon>speaker.ico</ApplicationIcon> | ||||
|   </PropertyGroup> | ||||
|   <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> | ||||
|   <PropertyGroup> | ||||
|  | @ -14,8 +18,8 @@ | |||
|     <ProjectTypeGuids>{82b43b9b-a64c-4715-b499-d71e9ca2bd60};{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> | ||||
|     <OutputType>Library</OutputType> | ||||
|     <AppDesignerFolder>Properties</AppDesignerFolder> | ||||
|     <RootNamespace>VitaliiGanzha.VsDingExtensionProject</RootNamespace> | ||||
|     <AssemblyName>VsDingExtensionProject</AssemblyName> | ||||
|     <RootNamespace>VitaliiGanzha.VsDingExtension</RootNamespace> | ||||
|     <AssemblyName>VsDingExtension</AssemblyName> | ||||
|     <SignAssembly>True</SignAssembly> | ||||
|     <AssemblyOriginatorKeyFile>Key.snk</AssemblyOriginatorKeyFile> | ||||
|     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> | ||||
|  | @ -28,6 +32,7 @@ | |||
|     <DefineConstants>DEBUG;TRACE</DefineConstants> | ||||
|     <ErrorReport>prompt</ErrorReport> | ||||
|     <WarningLevel>4</WarningLevel> | ||||
|     <Prefer32Bit>false</Prefer32Bit> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> | ||||
|     <DebugType>pdbonly</DebugType> | ||||
|  | @ -37,6 +42,7 @@ | |||
|     <ErrorReport>prompt</ErrorReport> | ||||
|     <WarningLevel>4</WarningLevel> | ||||
|     <RunCodeAnalysis>true</RunCodeAnalysis> | ||||
|     <Prefer32Bit>false</Prefer32Bit> | ||||
|   </PropertyGroup> | ||||
|   <ItemGroup> | ||||
|     <Reference Include="Microsoft.CSharp" /> | ||||
|  | @ -172,7 +178,13 @@ | |||
|     <None Include="Key.snk" /> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <Content Include="speaker.ico"> | ||||
|       <CopyToOutputDirectory>Always</CopyToOutputDirectory> | ||||
|       <IncludeInVSIX>true</IncludeInVSIX> | ||||
|     </Content> | ||||
|     <None Include="Resources\ding.wav" /> | ||||
|     <None Include="Resources\build.wav" /> | ||||
|     <None Include="Resources\debug.wav" /> | ||||
|     <Content Include="Resources\Package.ico" /> | ||||
|   </ItemGroup> | ||||
|   <PropertyGroup> | ||||
|  |  | |||
|  | @ -1,11 +1,6 @@ | |||
| using System; | ||||
| using System.ComponentModel.Composition; | ||||
| using System.ComponentModel.Composition.Hosting; | ||||
| using System.Diagnostics; | ||||
| using System.Diagnostics; | ||||
| using System.Globalization; | ||||
| using System.IO; | ||||
| using System.Media; | ||||
| using System.Reflection; | ||||
| using System.Runtime.InteropServices; | ||||
| using EnvDTE; | ||||
| using EnvDTE80; | ||||
|  | @ -13,23 +8,9 @@ using Microsoft.VisualStudio.ComponentModelHost; | |||
| using Microsoft.VisualStudio.Shell; | ||||
| using Microsoft.VisualStudio.TestWindow.Extensibility; | ||||
| 
 | ||||
| namespace VitaliiGanzha.VsDingExtensionProject | ||||
| namespace VitaliiGanzha.VsDingExtension | ||||
| { | ||||
|     /// <summary> | ||||
|     /// This is the class that implements the package exposed by this assembly. | ||||
|     /// | ||||
|     /// The minimum requirement for a class to be considered a valid package for Visual Studio | ||||
|     /// is to implement the IVsPackage interface and register itself with the shell. | ||||
|     /// This package uses the helper classes defined inside the Managed Package Framework (MPF) | ||||
|     /// to do it: it derives from the Package class that provides the implementation of the  | ||||
|     /// IVsPackage interface and uses the registration attributes defined in the framework to  | ||||
|     /// register itself and its components with the shell. | ||||
|     /// </summary> | ||||
|     // This attribute tells the PkgDef creation utility (CreatePkgDef.exe) that this class is | ||||
|     // a package. | ||||
|     [PackageRegistration(UseManagedResourcesOnly = true)] | ||||
|     // This attribute is used to register the information needed to show this package | ||||
|     // in the Help/About dialog of Visual Studio. | ||||
|     [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)] | ||||
|     [Guid(GuidList.guidVsDingExtensionProjectPkgString)] | ||||
|     [ProvideAutoLoad("{f1536ef8-92ec-443c-9ed7-fdadf150da82}")] | ||||
|  | @ -37,46 +18,44 @@ namespace VitaliiGanzha.VsDingExtensionProject | |||
|     { | ||||
|         private DTE2 applicationObject; | ||||
|         private AddIn addInInstance; | ||||
|         private BuildEvents buildEvents; | ||||
|         private DebuggerEvents debugEvents; | ||||
|         private SoundPlayer buildCompleteSoundPlayer; | ||||
|         private SoundPlayer debugSoundPlayer; | ||||
|         private SoundPlayer testCompleteSoundPlayer; | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Default constructor of the package. | ||||
|         /// Inside this method you can place any initialization code that does not require  | ||||
|         /// any Visual Studio service because at this point the package object is created but  | ||||
|         /// not sited yet inside Visual Studio environment. The place to do all the other  | ||||
|         /// initialization is the Initialize method. | ||||
|         /// </summary> | ||||
|         public VsDingExtensionProjectPackage() | ||||
|         { | ||||
|             Debug.WriteLine(string.Format(CultureInfo.CurrentCulture, "Entering constructor for: {0}", this.ToString())); | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|         ///////////////////////////////////////////////////////////////////////////// | ||||
|         // Overridden Package Implementation | ||||
|         #region Package Members | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Initialization of the package; this method is called right after the package is sited, so this is the place | ||||
|         /// where you can put all the initialization code that rely on services provided by VisualStudio. | ||||
|         /// </summary> | ||||
|         protected override void Initialize() | ||||
|         { | ||||
|             Debug.WriteLine(string.Format(CultureInfo.CurrentCulture, "Entering Initialize() of: {0}", | ||||
|                 this.ToString())); | ||||
|             base.Initialize(); | ||||
| 
 | ||||
|             buildCompleteSoundPlayer = new SoundPlayer(Resources.build); | ||||
|             debugSoundPlayer = new SoundPlayer(Resources.debug); | ||||
|             testCompleteSoundPlayer = new SoundPlayer(Resources.ding); | ||||
| 
 | ||||
|             applicationObject = (DTE2) GetService(typeof (DTE)); | ||||
| 
 | ||||
|             applicationObject.Events.BuildEvents.OnBuildDone += BuildEventsOnOnBuildDone; | ||||
|             applicationObject.Events.DebuggerEvents.OnEnterBreakMode += DebuggerEventsOnOnEnterBreakMode; | ||||
|             this.buildEvents = applicationObject.Events.BuildEvents; | ||||
|             this.debugEvents = applicationObject.Events.DebuggerEvents; | ||||
| 
 | ||||
|             buildEvents.OnBuildDone += (scope, action) => buildCompleteSoundPlayer.Play(); | ||||
|             debugEvents.OnEnterBreakMode += (dbgEventReason reason, ref dbgExecutionAction action) => debugSoundPlayer.Play(); | ||||
| 
 | ||||
|             var componentModel = | ||||
|                 Microsoft.VisualStudio.Shell.Package.GetGlobalService(typeof (SComponentModel)) as IComponentModel; | ||||
| 
 | ||||
|             if (componentModel == null) | ||||
|             { | ||||
|                 throw new Exception("componentModel is null"); | ||||
|                 Debug.WriteLine("componentModel is null"); | ||||
|                 return; | ||||
|             } | ||||
| 
 | ||||
|             var operationState = componentModel.GetService<IOperationState>(); | ||||
|  | @ -85,29 +64,12 @@ namespace VitaliiGanzha.VsDingExtensionProject | |||
| 
 | ||||
|         private void OperationStateOnStateChanged(object sender, OperationStateChangedEventArgs operationStateChangedEventArgs) | ||||
|         { | ||||
|              | ||||
|             if (operationStateChangedEventArgs.State.HasFlag(TestOperationStates.TestExecutionFinished)) | ||||
|             { | ||||
|                 PlaySound(); | ||||
|                 testCompleteSoundPlayer.Play(); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         private void DebuggerEventsOnOnEnterBreakMode(dbgEventReason reason, ref dbgExecutionAction executionAction) | ||||
|         { | ||||
|             PlaySound(); | ||||
|         } | ||||
| 
 | ||||
|         private void BuildEventsOnOnBuildDone(vsBuildScope scope, vsBuildAction action) | ||||
|         { | ||||
|             PlaySound(); | ||||
|         } | ||||
| 
 | ||||
|         private void PlaySound() | ||||
|         { | ||||
|             SoundPlayer player = new SoundPlayer(Resources.ding); | ||||
|             player.PlaySync(); | ||||
| 
 | ||||
|         } | ||||
| 
 | ||||
|         #endregion | ||||
| 
 | ||||
|     } | ||||
|  |  | |||
|  | @ -2,8 +2,22 @@ | |||
| <PackageManifest Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011" xmlns:d="http://schemas.microsoft.com/developer/vsx-schema-design/2011"> | ||||
|   <Metadata> | ||||
|     <Identity Id="26ba08d0-0d25-4479-8684-3054dd122876" Version="1.0" Language="en-US" Publisher="Vitalii Ganzha" /> | ||||
|     <DisplayName>VsDingExtensionProject</DisplayName> | ||||
|     <Description>Information about my package</Description> | ||||
|     <DisplayName>Visual Studio Ding extension</DisplayName> | ||||
|     <Description xml:space="preserve">This small extension will play notification sounds when following events occur: | ||||
| - Build Complete | ||||
| - Entering debugger mode (breakpoint hit, etc) | ||||
| - Unit tests finished to run | ||||
| 
 | ||||
| Useful when working with big solutions or when build/test run/hitting a breakpoint takes a lot of time and developer can be distructed on other things while he waits. | ||||
| 
 | ||||
| Just install it and it is ready to use! | ||||
| 
 | ||||
| This is an open source project, join! | ||||
| 
 | ||||
| Twitter: @GanzhaVitalii</Description> | ||||
|     <MoreInfo>https://github.com/thecoderok/vsdingextension</MoreInfo> | ||||
|     <Icon>speaker.ico</Icon> | ||||
|     <Tags>productivity</Tags> | ||||
|   </Metadata> | ||||
|   <Installation InstalledByMsi="false"> | ||||
|     <InstallationTarget Id="Microsoft.VisualStudio.Pro" Version="[12.0]" /> | ||||
|  |  | |||
							
								
								
									
										
											BIN
										
									
								
								VsDingExtensionProject/speaker.ico
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								VsDingExtensionProject/speaker.ico
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 66 KiB | 
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue