Ejemplo n.º 1
0
        private async Task EnsureBuildManagerInitializedAsync()
        {
            // Switch to UI thread for querying the build manager service.
            await _threadingService.SwitchToUIThread();

            if (_buildManager == null)
            {
                _buildManager = await _vsSolutionBuildManagerService.GetValueAsync();

                // Register for solution build events.
                _buildManager !.AdviseUpdateSolutionEvents(this, out _solutionEventsCookie);
            }
        }
Ejemplo n.º 2
0
        internal AbstractGenerateNuGetPackageCommand CreateInstance(
            GeneratePackageOnBuildPropertyProvider?generatePackageOnBuildPropertyProvider = null,
            IVsSolutionBuildManager2?buildManager          = null,
            IVsUpdateSolutionEvents?solutionEventsListener = null,
            bool isBuilding  = false,
            bool cancelBuild = false)
        {
            var hierarchy        = IVsHierarchyFactory.Create();
            var project          = UnconfiguredProjectFactory.Create(hierarchy);
            var threadingService = IProjectThreadingServiceFactory.Create();

            buildManager ??= IVsSolutionBuildManager2Factory.Create(solutionEventsListener, hierarchy, isBuilding, cancelBuild);
            var serviceProvider = IVsServiceFactory.Create <SVsSolutionBuildManager, IVsSolutionBuildManager2>(buildManager);

            generatePackageOnBuildPropertyProvider ??= CreateGeneratePackageOnBuildPropertyProvider();

            return(CreateInstanceCore(project, threadingService, serviceProvider, generatePackageOnBuildPropertyProvider));
        }
Ejemplo n.º 3
0
        protected virtual void Dispose(bool disposing)
        {
            if (!_disposedValue)
            {
                if (disposing && _buildManager != null)
                {
                    // Build manager APIs require UI thread access.
                    _threadingService.ExecuteSynchronously(async() =>
                    {
                        await _threadingService.SwitchToUIThread();

                        if (_buildManager != null)
                        {
                            // Unregister solution build events.
                            _buildManager.UnadviseUpdateSolutionEvents(_solutionEventsCookie);
                            _buildManager = null;
                        }
                    });
                }

                _disposedValue = true;
            }
        }