Пример #1
0
        /// <summary>
        /// Load settings from server if project context has changed. This refreshes the user
        /// interface in case the tool window is open when connecting / disconnecting
        /// </summary>
        public void LoadSettings()
        {
            _settings = DependencyManagerSettings.Instance;

            // The load is triggered anyways but the load is registered to the same event and not
            // guaranteed to be executed before the ui refresh, so we load it manually before refreshing.
            LoadSettingsFailed = !_settings.Load(_teamFoundationServer.ActiveProjectContext.DomainUri) && IsConnected;

            FetchDependenciesOnLocalSolutionBuild = _settings.FetchDependenciesOnLocalSolutionBuild;
            FilenameExtension           = string.Join(",", _settings.ValidDependencyDefinitionFileExtension);
            RelativeOutputPath          = _settings.RelativeOutputPath;
            BinaryRepositoryTeamProject = _settings.BinaryRepositoryTeamProject;
            IsBinaryRepositoryComponentSettingsEnabled = _settings.IsBinaryRepositoryComponentSettingsEnabled;
            BinaryRepositoryFilterComponentList        = _settings.BinaryRepositoryFilterComponentList;
            BinaryRepositoryTeamProjectCollectionUri   = _settings.BinaryRepositoryTeamProjectCollectionUrl;
            IsZippedDependencyAllowed = _settings.IsZippedDependencyAllowed;
            IsMultiSiteAllowed        = _settings.IsMultiSiteAllowed;
            Sites = string.Join(";", _settings.MultiSiteList);

            // check or uncheck resolver depending on whether their internal name is in the list of disabled resolvers
            foreach (var resolverTypeViewModel in ResolverTypes)
            {
                resolverTypeViewModel.IsEnabled = _settings.DisabledResolvers.Contains(resolverTypeViewModel.ReferenceName) == false;
            }

            RaiseNotifyPropertyChanged(() => IsConnected);
            RaiseNotifyPropertyChanged(() => IsZippedDependencyAllowedAndConnected);
            RaiseNotifyPropertyChanged(() => IsMultiSiteAllowed);
            RaiseNotifyPropertyChanged(() => ProjectContext);
            RaiseNotifyPropertyChanged(() => LoadSettingsFailed);
        }
        /// <summary>
        /// Creates settings to use for dependency service
        /// </summary>
        /// <param name="settings">Instance to default configuration settings</param>
        /// <param name="componentTargetsFileName"> Name of the component.targets file</param>
        /// <returns></returns>
        private ISettings <ServiceValidSettings> CreateSettingsToUse(DependencyManagerSettings settings, string componentTargetsFileName)
        {
            var workstation = Workstation.Current;
            var info        = workstation.GetLocalWorkspaceInfo(componentTargetsFileName);
            var collection  = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(info.ServerUri, new UICredentialsProvider());

            if (!collection.HasAuthenticated)
            {
                collection.Authenticate();
            }
            var workspace = info.GetWorkspace(collection);
            //var serverItemForLocalItem = workspace.GetServerItemForLocalItem(componentTargetsFileName);
            //var vcs = collection.GetService<VersionControlServer>();

            var outputFolder = GetOutputFolder(workspace, componentTargetsFileName);

            // create settings
            ISettings <ServiceValidSettings> settingsToUse = new Settings <ServiceValidSettings>();

            // Default TFS settings
            settingsToUse.AddSetting(new KeyValuePair <ServiceValidSettings, string>(ServiceValidSettings.DefaultTeamProjectCollection,
                                                                                     collection.Uri.ToString()));
            settingsToUse.AddSetting(new KeyValuePair <ServiceValidSettings, string>(ServiceValidSettings.DefaultWorkspaceName, workspace.Name));
            settingsToUse.AddSetting(new KeyValuePair <ServiceValidSettings, string>(ServiceValidSettings.DefaultWorkspaceOwner, workspace.OwnerName));
            // Output configuration
            settingsToUse.AddSetting(new KeyValuePair <ServiceValidSettings, string>(ServiceValidSettings.DefaultOutputBaseFolder, outputFolder));
            settingsToUse.AddSetting(new KeyValuePair <ServiceValidSettings, string>(ServiceValidSettings.DefaultRelativeOutputPath, settings.RelativeOutputPath));
            // BinaryRepository settings
            settingsToUse.AddSetting(new KeyValuePair <ServiceValidSettings, string>(ServiceValidSettings.BinaryTeamProjectCollectionUrl,
                                                                                     collection.Uri.ToString()));
            settingsToUse.AddSetting(new KeyValuePair <ServiceValidSettings, string>(ServiceValidSettings.BinaryRepositoryTeamProject,
                                                                                     settings.BinaryRepositoryTeamProject));
            // Visual Editor
            var dependencyDefinitionFileNameList = string.Join(";", settings.ValidDependencyDefinitionFileExtension.Select(x => string.Concat("component", x)));

            if (!dependencyDefinitionFileNameList.Contains(Path.GetFileName(componentTargetsFileName)))
            {
                dependencyDefinitionFileNameList = string.Concat(
                    Path.GetFileName(componentTargetsFileName), ";", dependencyDefinitionFileNameList);
            }
            settingsToUse.AddSetting(new KeyValuePair <ServiceValidSettings, string>(ServiceValidSettings.DefaultDependencyDefinitionFilename,
                                                                                     dependencyDefinitionFileNameList));

            return(settingsToUse);
        }
        /// <summary>
        /// Load settings from server if project context has changed. This refreshes the user
        /// interface in case the tool window is open when connecting / disconnecting
        /// </summary>
        public void LoadSettings()
        {
            _settings = DependencyManagerSettings.Instance;

            // The load is triggered anyways but the load is registered to the same event and not
            // guaranteed to be executed before the ui refresh, so we load it manually before refreshing.
            LoadSettingsFailed = !_settings.Load(_teamFoundationServer.ActiveProjectContext.DomainUri) && IsConnected;

            BinaryRepositoryTeamProject = _settings.BinaryRepositoryTeamProject;
            BinaryRepositoryTeamProjectCollectionUri = _settings.BinaryRepositoryTeamProjectCollectionUrl;
            Sites = string.Join(";", _settings.MultiSiteList);

            LoadMultiSiteComboBox();

            //Load the settings from the local registry
            PathToSevenZipExe = ApplicationSettings.Instance.InstallPathForSevenZip;

            RaiseNotifyPropertyChanged(() => IsConnected);
            RaiseNotifyPropertyChanged(() => ProjectContext);
            RaiseNotifyPropertyChanged(() => LoadSettingsFailed);
        }