Beispiel #1
0
        private async Task ExportingPluginConfigurationXml(Model.ConnectionData connectionData, Model.CommonConfiguration commonConfig)
        {
            var service = await ConnectAndWriteToOutputAsync(connectionData);

            if (service == null)
            {
                return;
            }

            var filePath = await CreatePluginDescription(connectionData, service, commonConfig);

            this._iWriteToOutput.PerformAction(service.ConnectionData, filePath);
        }
        public async Task ExecuteExportingPluginConfigurationXml(Model.ConnectionData connectionData, Model.CommonConfiguration commonConfig)
        {
            string operation = string.Format(Properties.OperationNames.ExportingPluginConfigurationXmlFormat1, connectionData?.Name);

            this._iWriteToOutput.WriteToOutputStartOperation(connectionData, operation);

            try
            {
                await ExportingPluginConfigurationXml(connectionData, commonConfig);
            }
            catch (Exception ex)
            {
                this._iWriteToOutput.WriteErrorToOutput(connectionData, ex);
            }
            finally
            {
                this._iWriteToOutput.WriteToOutputEndOperation(connectionData, operation);
            }
        }
        private async Task <string> CreatePluginDescription(Model.ConnectionData connectionData, IOrganizationServiceExtented service, Model.CommonConfiguration commonConfig)
        {
            Model.Backup.PluginDescription description = await GetPluginDescription(service);

            if (connectionData.User != null)
            {
                description.CRMConnectionUserName = connectionData.User.Username;
            }
            else if (CredentialCache.DefaultNetworkCredentials != null)
            {
                description.CRMConnectionUserName =
                    (!string.IsNullOrEmpty(CredentialCache.DefaultNetworkCredentials.Domain) ? CredentialCache.DefaultNetworkCredentials.Domain + "\\" : "")
                    + CredentialCache.DefaultNetworkCredentials.UserName
                ;
            }

            description.Organization          = connectionData.UniqueOrgName;
            description.DiscoveryService      = connectionData.DiscoveryUrl;
            description.OrganizationService   = connectionData.OrganizationUrl;
            description.PublicUrl             = connectionData.PublicUrl;
            description.MachineName           = Environment.MachineName;
            description.ExecuteUserDomainName = Environment.UserDomainName;
            description.ExecuteUserName       = Environment.UserName;

            commonConfig.CheckFolderForExportExists(this._iWriteToOutput);

            string fileName = string.Format("{0}.{1} {2}.xml"
                                            , connectionData.Name
                                            , commonConfig.PluginConfigurationFileName.Trim()
                                            , EntityFileNameFormatter.GetDateString()
                                            );

            string filePath = Path.Combine(commonConfig.FolderForExport, fileName);

            description.Save(filePath);

            this._iWriteToOutput.WriteToOutput(connectionData, "Plugin Description exported to {0}", filePath);
            this._iWriteToOutput.WriteToOutputFilePathUri(connectionData, filePath);

            return(filePath);
        }
        private async Task ExportingPluginConfigurationIntoFolder(EnvDTE.SelectedItem selectedItem, Model.ConnectionData connectionData, Model.CommonConfiguration commonConfig)
        {
            var service = await ConnectAndWriteToOutputAsync(connectionData);

            if (service == null)
            {
                return;
            }

            string filePath = string.Empty;

            //filePath = CreatePluginDescription(connectionData, service, commonConfig.FolderForExport, commonConfig.PluginConfigurationFileName, connectionData.Name);

            if (selectedItem.ProjectItem != null)
            {
                string folder = selectedItem.ProjectItem.FileNames[1];

                filePath = await CreatePluginDescription(connectionData, service, commonConfig);

                File.SetAttributes(filePath, FileAttributes.ReadOnly);

                selectedItem.ProjectItem.ProjectItems.AddFromFileCopy(filePath);

                selectedItem.ProjectItem.ContainingProject.Save();
            }
            else if (selectedItem.Project != null)
            {
                string relativePath = DTEHelper.GetRelativePath(selectedItem.Project);

                string solutionPath = Path.GetDirectoryName(selectedItem.DTE.Solution.FullName);

                string folder = Path.Combine(solutionPath, relativePath);

                if (!Directory.Exists(folder))
                {
                    Directory.CreateDirectory(folder);
                }

                filePath = await CreatePluginDescription(connectionData, service, commonConfig);

                File.SetAttributes(filePath, FileAttributes.ReadOnly);

                selectedItem.Project.ProjectItems.AddFromFile(filePath);
            }

            this._iWriteToOutput.PerformAction(service.ConnectionData, filePath);

            service.TryDispose();
        }