11using System ;
2- using System . ComponentModel . Composition ;
3- using System . Diagnostics ;
42using System . Runtime . InteropServices ;
53using System . Threading ;
64using System . Threading . Tasks ;
75using System . Windows ;
86using GitHub . Api ;
97using GitHub . Extensions ;
8+ using GitHub . Helpers ;
109using GitHub . Info ;
1110using GitHub . Exports ;
1211using GitHub . Logging ;
13- using GitHub . Models ;
1412using GitHub . Services ;
1513using GitHub . ViewModels . GitHubPane ;
1614using GitHub . VisualStudio . Menus ;
1715using GitHub . VisualStudio . UI ;
1816using Microsoft . VisualStudio ;
1917using Microsoft . VisualStudio . Shell ;
2018using Microsoft . VisualStudio . Shell . Interop ;
21- using Octokit ;
2219using Serilog ;
2320using Task = System . Threading . Tasks . Task ;
2421
2522namespace GitHub . VisualStudio
2623{
2724 [ PackageRegistration ( UseManagedResourcesOnly = true , AllowsBackgroundLoading = true ) ]
28- [ InstalledProductRegistration ( "#110" , "#112" , System . AssemblyVersionInformation . Version , IconResourceID = 400 ) ]
25+ [ InstalledProductRegistration ( "#110" , "#112" , AssemblyVersionInformation . Version , IconResourceID = 400 ) ]
2926 [ Guid ( Guids . guidGitHubPkgString ) ]
3027 [ ProvideMenuResource ( "Menus.ctmenu" , 1 ) ]
3128 // Only initialize when we're in the context of a Git repository.
@@ -36,7 +33,6 @@ public class GitHubPackage : AsyncPackage
3633 {
3734 static readonly ILogger log = LogManager . ForContext < GitHubPackage > ( ) ;
3835
39- [ System . Diagnostics . CodeAnalysis . SuppressMessage ( "Microsoft.Performance" , "CA1823:AvoidUnusedPrivateFields" ) ]
4036 readonly IServiceProvider serviceProvider ;
4137
4238 public GitHubPackage ( )
@@ -77,6 +73,9 @@ async Task InitializeMenus()
7773 return ;
7874 }
7975
76+ // IMenuCommandService.AddCommand uses IServiceProvider.GetService and must be called on Main thread.
77+ await ThreadingHelper . SwitchToMainThreadAsync ( ) ;
78+
8079 foreach ( var menu in menus . Menus )
8180 serviceProvider . AddCommandHandler ( menu . Guid , menu . CmdId , ( s , e ) => menu . Activate ( ) ) ;
8281
@@ -95,16 +94,6 @@ async Task EnsurePackageLoaded(Guid packageGuid)
9594 }
9695 }
9796
98- [ Export ( typeof ( IGitHubClient ) ) ]
99- public class GHClient : GitHubClient
100- {
101- [ ImportingConstructor ]
102- public GHClient ( IProgram program )
103- : base ( program . ProductHeader )
104- {
105- }
106- }
107-
10897 [ PartCreationPolicy ( CreationPolicy . Shared ) ]
10998 public class ServiceProviderExports
11099 {
@@ -149,35 +138,8 @@ public ServiceProviderExports([Import(typeof(SVsServiceProvider))] IServiceProvi
149138 public sealed class ServiceProviderPackage : AsyncPackage , IServiceProviderPackage , IGitHubToolWindowManager
150139 {
151140 public const string ServiceProviderPackageId = "D5CE1488-DEDE-426D-9E5B-BFCCFBE33E53" ;
152- const string StartPagePreview4PackageId = "3b764d23-faf7-486f-94c7-b3accc44a70d" ;
153- const string StartPagePreview5PackageId = "3b764d23-faf7-486f-94c7-b3accc44a70e" ;
154141 static readonly ILogger log = LogManager . ForContext < ServiceProviderPackage > ( ) ;
155142
156- Version vsversion ;
157- Version VSVersion
158- {
159- get
160- {
161- if ( vsversion == null )
162- {
163- var asm = typeof ( ITaskList ) . Assembly ;
164- try
165- {
166- // this will return Microsoft.VisualStudio.Shell.Immutable.14.0 in VS15
167- // but Microsoft.VisualStudio.Shell.Framework in Dev15
168- var vinfo = FileVersionInfo . GetVersionInfo ( asm . Location ) ;
169- vsversion = new Version ( vinfo . FileMajorPart , vinfo . FileMinorPart , vinfo . FileBuildPart , vinfo . FilePrivatePart ) ;
170- }
171- catch
172- {
173- // something wrong, fallback to assembly version
174- vsversion = asm . GetName ( ) . Version ;
175- }
176- }
177- return vsversion ;
178- }
179- }
180-
181143 protected override Task InitializeAsync ( CancellationToken cancellationToken , IProgress < ServiceProgressData > progress )
182144 {
183145 AddService ( typeof ( IGitHubServiceProvider ) , CreateService , true ) ;
@@ -286,7 +248,6 @@ async Task<object> CreateService(IAsyncServiceContainer container, CancellationT
286248 }
287249 else if ( serviceType == typeof ( IUsageTracker ) )
288250 {
289- await ThreadHelper . JoinableTaskFactory . SwitchToMainThreadAsync ( ) ;
290251 var usageService = await GetServiceAsync ( typeof ( IUsageService ) ) as IUsageService ;
291252 var serviceProvider = await GetServiceAsync ( typeof ( IGitHubServiceProvider ) ) as IGitHubServiceProvider ;
292253 return new UsageTracker ( serviceProvider , usageService ) ;
0 commit comments