Finished version for Visual Studio 2013, about to publish
This commit is contained in:
parent
c02e906621
commit
80c0dc84da
|
@ -1,8 +1,9 @@
|
||||||
// Guids.cs
|
// Guids.cs
|
||||||
// MUST match guids.h
|
// MUST match guids.h
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace VitaliiGanzha.VsDingExtensionProject
|
namespace VitaliiGanzha.VsDingExtension
|
||||||
{
|
{
|
||||||
static class GuidList
|
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
|
// You can specify all the values or you can default the Revision and Build Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
|
|
||||||
[assembly: AssemblyVersion("1.0.0.0")]
|
[assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
// </auto-generated>
|
// </auto-generated>
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
namespace VitaliiGanzha.VsDingExtensionProject {
|
namespace VitaliiGanzha.VsDingExtension {
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ namespace VitaliiGanzha.VsDingExtensionProject {
|
||||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||||
get {
|
get {
|
||||||
if (object.ReferenceEquals(resourceMan, null)) {
|
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;
|
resourceMan = temp;
|
||||||
}
|
}
|
||||||
return resourceMan;
|
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>
|
/// <summary>
|
||||||
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
|
/// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -118,6 +118,12 @@
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
<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">
|
<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>
|
<value>Resources\ding.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 66 KiB |
|
@ -4,6 +4,10 @@
|
||||||
<MinimumVisualStudioVersion>12.0</MinimumVisualStudioVersion>
|
<MinimumVisualStudioVersion>12.0</MinimumVisualStudioVersion>
|
||||||
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">12.0</VisualStudioVersion>
|
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">12.0</VisualStudioVersion>
|
||||||
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
||||||
|
<TargetFrameworkProfile />
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<ApplicationIcon>speaker.ico</ApplicationIcon>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
@ -14,8 +18,8 @@
|
||||||
<ProjectTypeGuids>{82b43b9b-a64c-4715-b499-d71e9ca2bd60};{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
<ProjectTypeGuids>{82b43b9b-a64c-4715-b499-d71e9ca2bd60};{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||||
<OutputType>Library</OutputType>
|
<OutputType>Library</OutputType>
|
||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
<RootNamespace>VitaliiGanzha.VsDingExtensionProject</RootNamespace>
|
<RootNamespace>VitaliiGanzha.VsDingExtension</RootNamespace>
|
||||||
<AssemblyName>VsDingExtensionProject</AssemblyName>
|
<AssemblyName>VsDingExtension</AssemblyName>
|
||||||
<SignAssembly>True</SignAssembly>
|
<SignAssembly>True</SignAssembly>
|
||||||
<AssemblyOriginatorKeyFile>Key.snk</AssemblyOriginatorKeyFile>
|
<AssemblyOriginatorKeyFile>Key.snk</AssemblyOriginatorKeyFile>
|
||||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||||
|
@ -28,6 +32,7 @@
|
||||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
<DebugType>pdbonly</DebugType>
|
<DebugType>pdbonly</DebugType>
|
||||||
|
@ -37,6 +42,7 @@
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<RunCodeAnalysis>true</RunCodeAnalysis>
|
<RunCodeAnalysis>true</RunCodeAnalysis>
|
||||||
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Microsoft.CSharp" />
|
<Reference Include="Microsoft.CSharp" />
|
||||||
|
@ -172,7 +178,13 @@
|
||||||
<None Include="Key.snk" />
|
<None Include="Key.snk" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Content Include="speaker.ico">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
<IncludeInVSIX>true</IncludeInVSIX>
|
||||||
|
</Content>
|
||||||
<None Include="Resources\ding.wav" />
|
<None Include="Resources\ding.wav" />
|
||||||
|
<None Include="Resources\build.wav" />
|
||||||
|
<None Include="Resources\debug.wav" />
|
||||||
<Content Include="Resources\Package.ico" />
|
<Content Include="Resources\Package.ico" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
|
|
@ -1,11 +1,6 @@
|
||||||
using System;
|
using System.Diagnostics;
|
||||||
using System.ComponentModel.Composition;
|
|
||||||
using System.ComponentModel.Composition.Hosting;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.IO;
|
|
||||||
using System.Media;
|
using System.Media;
|
||||||
using System.Reflection;
|
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using EnvDTE;
|
using EnvDTE;
|
||||||
using EnvDTE80;
|
using EnvDTE80;
|
||||||
|
@ -13,23 +8,9 @@ using Microsoft.VisualStudio.ComponentModelHost;
|
||||||
using Microsoft.VisualStudio.Shell;
|
using Microsoft.VisualStudio.Shell;
|
||||||
using Microsoft.VisualStudio.TestWindow.Extensibility;
|
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)]
|
[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)]
|
[InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)]
|
||||||
[Guid(GuidList.guidVsDingExtensionProjectPkgString)]
|
[Guid(GuidList.guidVsDingExtensionProjectPkgString)]
|
||||||
[ProvideAutoLoad("{f1536ef8-92ec-443c-9ed7-fdadf150da82}")]
|
[ProvideAutoLoad("{f1536ef8-92ec-443c-9ed7-fdadf150da82}")]
|
||||||
|
@ -37,46 +18,44 @@ namespace VitaliiGanzha.VsDingExtensionProject
|
||||||
{
|
{
|
||||||
private DTE2 applicationObject;
|
private DTE2 applicationObject;
|
||||||
private AddIn addInInstance;
|
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()
|
public VsDingExtensionProjectPackage()
|
||||||
{
|
{
|
||||||
Debug.WriteLine(string.Format(CultureInfo.CurrentCulture, "Entering constructor for: {0}", this.ToString()));
|
Debug.WriteLine(string.Format(CultureInfo.CurrentCulture, "Entering constructor for: {0}", this.ToString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
// Overridden Package Implementation
|
|
||||||
#region Package Members
|
#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()
|
protected override void Initialize()
|
||||||
{
|
{
|
||||||
Debug.WriteLine(string.Format(CultureInfo.CurrentCulture, "Entering Initialize() of: {0}",
|
Debug.WriteLine(string.Format(CultureInfo.CurrentCulture, "Entering Initialize() of: {0}",
|
||||||
this.ToString()));
|
this.ToString()));
|
||||||
base.Initialize();
|
base.Initialize();
|
||||||
|
|
||||||
|
buildCompleteSoundPlayer = new SoundPlayer(Resources.build);
|
||||||
|
debugSoundPlayer = new SoundPlayer(Resources.debug);
|
||||||
|
testCompleteSoundPlayer = new SoundPlayer(Resources.ding);
|
||||||
|
|
||||||
applicationObject = (DTE2) GetService(typeof (DTE));
|
applicationObject = (DTE2) GetService(typeof (DTE));
|
||||||
|
|
||||||
applicationObject.Events.BuildEvents.OnBuildDone += BuildEventsOnOnBuildDone;
|
this.buildEvents = applicationObject.Events.BuildEvents;
|
||||||
applicationObject.Events.DebuggerEvents.OnEnterBreakMode += DebuggerEventsOnOnEnterBreakMode;
|
this.debugEvents = applicationObject.Events.DebuggerEvents;
|
||||||
|
|
||||||
|
buildEvents.OnBuildDone += (scope, action) => buildCompleteSoundPlayer.Play();
|
||||||
|
debugEvents.OnEnterBreakMode += (dbgEventReason reason, ref dbgExecutionAction action) => debugSoundPlayer.Play();
|
||||||
|
|
||||||
var componentModel =
|
var componentModel =
|
||||||
Microsoft.VisualStudio.Shell.Package.GetGlobalService(typeof (SComponentModel)) as IComponentModel;
|
Microsoft.VisualStudio.Shell.Package.GetGlobalService(typeof (SComponentModel)) as IComponentModel;
|
||||||
|
|
||||||
if (componentModel == null)
|
if (componentModel == null)
|
||||||
{
|
{
|
||||||
throw new Exception("componentModel is null");
|
Debug.WriteLine("componentModel is null");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var operationState = componentModel.GetService<IOperationState>();
|
var operationState = componentModel.GetService<IOperationState>();
|
||||||
|
@ -85,29 +64,12 @@ namespace VitaliiGanzha.VsDingExtensionProject
|
||||||
|
|
||||||
private void OperationStateOnStateChanged(object sender, OperationStateChangedEventArgs operationStateChangedEventArgs)
|
private void OperationStateOnStateChanged(object sender, OperationStateChangedEventArgs operationStateChangedEventArgs)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (operationStateChangedEventArgs.State.HasFlag(TestOperationStates.TestExecutionFinished))
|
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
|
#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">
|
<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>
|
<Metadata>
|
||||||
<Identity Id="26ba08d0-0d25-4479-8684-3054dd122876" Version="1.0" Language="en-US" Publisher="Vitalii Ganzha" />
|
<Identity Id="26ba08d0-0d25-4479-8684-3054dd122876" Version="1.0" Language="en-US" Publisher="Vitalii Ganzha" />
|
||||||
<DisplayName>VsDingExtensionProject</DisplayName>
|
<DisplayName>Visual Studio Ding extension</DisplayName>
|
||||||
<Description>Information about my package</Description>
|
<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>
|
</Metadata>
|
||||||
<Installation InstalledByMsi="false">
|
<Installation InstalledByMsi="false">
|
||||||
<InstallationTarget Id="Microsoft.VisualStudio.Pro" Version="[12.0]" />
|
<InstallationTarget Id="Microsoft.VisualStudio.Pro" Version="[12.0]" />
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 66 KiB |
Loading…
Reference in New Issue