Эх сурвалжийг харах

FilteredSolutionsExtension: reduce extension main class (there was duplicity)

Dalibor Votruba 1 жил өмнө
parent
commit
d05c9fc110

+ 0 - 39
FilteredSolutionsExtension/FilteredSolutionsExtension/FilterSolutionsPackage.cs

@@ -1,39 +0,0 @@
-using Microsoft.VisualStudio.Shell;
-using Microsoft.VisualStudio.Shell.Interop;
-using System;
-using System.Runtime.InteropServices;
-using System.Threading;
-using Task = System.Threading.Tasks.Task;
-
-namespace Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension
-{
-
-    [PackageRegistration(UseManagedResourcesOnly = true, AllowsBackgroundLoading = true)]
-    [Guid(FilterSolutionsPackage.PackageGuidString)]
-    [ProvideMenuResource("Menus.ctmenu", 1)]
-    [ProvideAutoLoad(UIContextGuids80.NoSolution, PackageAutoLoadFlags.BackgroundLoad)]
-    [ProvideAutoLoad(UIContextGuids80.SolutionExists, PackageAutoLoadFlags.BackgroundLoad)]
-    public sealed class FilterSolutionsPackage : AsyncPackage
-    {
-        public const string PackageGuidString = "12345678-1234-1234-1234-123456789abc";
-        private SolutionOpeningInterceptor _solutionInterceptor;
-
-        protected override async Task InitializeAsync(CancellationToken cancellationToken, IProgress<ServiceProgressData> progress)
-        {
-            await this.JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken);
-
-            _solutionInterceptor = new SolutionOpeningInterceptor(this);
-            await _solutionInterceptor.InitializeAsync();
-        }
-
-        protected override void Dispose(bool disposing)
-        {
-            if (disposing)
-            {
-                _solutionInterceptor?.Dispose();
-            }
-            base.Dispose(disposing);
-        }
-    }
-
-}

+ 4 - 1
FilteredSolutionsExtension/FilteredSolutionsExtension/FilteredSolutionsExtension.csproj

@@ -47,7 +47,6 @@
   <ItemGroup>
     <Compile Include="FileUtils.cs" />
     <Compile Include="FilteredSolutionGenerator.cs" />
-    <Compile Include="FilterSolutionsPackage.cs" />
     <Compile Include="ProjectFilterDialog.xaml.cs">
       <DependentUpon>ProjectFilterDialog.xaml</DependentUpon>
     </Compile>
@@ -82,6 +81,10 @@
     </Page>
   </ItemGroup>
   <ItemGroup>
+    <Content Include="releasenote.txt">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+      <IncludeInVSIX>true</IncludeInVSIX>
+    </Content>
     <Content Include="Resources\FilterSolutionsCommand.png" />
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

+ 20 - 36
FilteredSolutionsExtension/FilteredSolutionsExtension/FilteredSolutionsExtensionPackage.cs

@@ -1,53 +1,37 @@
 using Microsoft.VisualStudio.Shell;
+using Microsoft.VisualStudio.Shell.Interop;
+using Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension;
 using System;
 using System.Runtime.InteropServices;
 using System.Threading;
 using Task = System.Threading.Tasks.Task;
 
-namespace FilteredSolutionsExtension
-{
-    /// <summary>
-    /// This is the class that implements the package exposed by this assembly.
-    /// </summary>
-    /// <remarks>
-    /// <para>
-    /// 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. These attributes tell the pkgdef creation
-    /// utility what data to put into .pkgdef file.
-    /// </para>
-    /// <para>
-    /// To get loaded into VS, the package must be referred by &lt;Asset Type="Microsoft.VisualStudio.VsPackage" ...&gt; in .vsixmanifest file.
-    /// </para>
-    /// </remarks>
-    [PackageRegistration(UseManagedResourcesOnly = true, AllowsBackgroundLoading = true)]
+namespace Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension
+{ [PackageRegistration(UseManagedResourcesOnly = true, AllowsBackgroundLoading = true)]
     [Guid(FilteredSolutionsExtensionPackage.PackageGuidString)]
+    [ProvideMenuResource("Menus.ctmenu", 1)]
+    [ProvideAutoLoad(UIContextGuids80.NoSolution, PackageAutoLoadFlags.BackgroundLoad)]
+    [ProvideAutoLoad(UIContextGuids80.SolutionExists, PackageAutoLoadFlags.BackgroundLoad)]
     public sealed class FilteredSolutionsExtensionPackage : AsyncPackage
     {
-        /// <summary>
-        /// FilteredSolutionsExtensionPackage GUID string.
-        /// </summary>
-        public const string PackageGuidString = "3fb488a4-d627-4ddd-a424-03f493cd0915";
+        public const string PackageGuidString = "12345678-1234-1234-1234-123456789abc";
+        private SolutionOpeningInterceptor _solutionInterceptor;
 
-        #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>
-        /// <param name="cancellationToken">A cancellation token to monitor for initialization cancellation, which can occur when VS is shutting down.</param>
-        /// <param name="progress">A provider for progress updates.</param>
-        /// <returns>A task representing the async work of package initialization, or an already completed task if there is none. Do not return null from this method.</returns>
         protected override async Task InitializeAsync(CancellationToken cancellationToken, IProgress<ServiceProgressData> progress)
         {
-            // When initialized asynchronously, the current thread may be a background thread at this point.
-            // Do any initialization that requires the UI thread after switching to the UI thread.
             await this.JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken);
+
+            _solutionInterceptor = new SolutionOpeningInterceptor(this);
+            await _solutionInterceptor.InitializeAsync();
         }
 
-        #endregion
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing)
+            {
+                _solutionInterceptor?.Dispose();
+            }
+            base.Dispose(disposing);
+        }
     }
 }

+ 2 - 0
FilteredSolutionsExtension/FilteredSolutionsExtension/releasenote.txt

@@ -0,0 +1,2 @@
+## 1.0.0 - 2.3.2025
+- Initial release of the Filtered Solutions Extension for Visual Studio 2022.

+ 1 - 0
FilteredSolutionsExtension/FilteredSolutionsExtension/source.extension.vsixmanifest

@@ -4,6 +4,7 @@
         <Identity Id="FilteredSolutionsExtension.e12e79ba-6c63-4737-868d-4e888accaed1" Version="1.0.0" Language="en-US" Publisher="Dalibor Votruba" />
         <DisplayName>FilteredSolutionsExtension</DisplayName>
         <Description xml:space="preserve">Visual Studio extension to filter projects when opening solutions.</Description>
+        <ReleaseNotes>releasenote.txt</ReleaseNotes>
     </Metadata>
     <Installation>
         <InstallationTarget Id="Microsoft.VisualStudio.Community" Version="[17.0, 18.0)">