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