Пример #1
0
        /// <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 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
            NuGetVSTelemetryService.Initialize();

            return(Task.CompletedTask);
        }
Пример #2
0
        protected override async Task InitializeAsync(
            CancellationToken cancellationToken,
            IProgress <ServiceProgressData> progress)
        {
            NuGetVSTelemetryService.Initialize();

            _handler = await SolutionRestoreBuildHandler.InitializeAsync(this);

            await SolutionRestoreCommand.InitializeAsync(this);

            // Set up brokered services - Do not reference NuGet.VisualStudio.Internals.Contract explicitly to avoid an unnecessary assembly load
            IBrokeredServiceContainer brokeredServiceContainer = await this.GetServiceAsync <SVsBrokeredServiceContainer, IBrokeredServiceContainer>();

            brokeredServiceContainer.Proffer(BrokeredServicesUtility.DeprecatedSolutionService, factory: BrokeredServicesUtility.GetNuGetSolutionServicesFactory());
            brokeredServiceContainer.Proffer(BrokeredServicesUtility.SolutionService, factory: BrokeredServicesUtility.GetNuGetSolutionServicesFactory());

            await base.InitializeAsync(cancellationToken, progress);
        }
Пример #3
0
        private async Task EnsureInitializeAsync()
        {
            try
            {
                // If already initialized, need not be on the UI thread
                if (_initialized)
                {
                    await EnsureNuGetAndVsProjectAdapterCacheAsync();

                    return;
                }

                // Ensure all initialization finished when needed, it still runs as async and prevents _initialized set true too early.
                // Setting '_initialized = true' too early caused random timing bug.

                await _semaphoreLock.ExecuteAsync(async() =>
                {
                    if (_initialized)
                    {
                        return;
                    }

                    NuGetVSTelemetryService.Initialize();

                    await NuGetUIThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();

                    await InitializeAsync();

                    var dte = await _asyncServiceProvider.GetDTEAsync();
                    if (dte.Solution.IsOpen)
                    {
                        await OnSolutionExistsAndFullyLoadedAsync();
                    }

                    _initialized = true;
                });
            }
            catch (Exception e)
            {
                // ignore errors
                Debug.Fail(e.ToString());
                _logger.LogError(e.ToString());
            }
        }