コード例 #1
0
        public static List <string> GetProfiles(Project project, ToolWindowType toolWindowType)
        {
            if (toolWindowType == ToolWindowType.PluginTraceViewer)
            {
                return(null);
            }

            SpklConfig spklConfig  = ConfigFile.GetSpklConfigFile(project);
            string     projectPath = ProjectWorker.GetProjectPath(project);

            switch (toolWindowType)
            {
            case ToolWindowType.PluginDeployer:
                return(GetConfigProfiles(projectPath, spklConfig.plugins));

            case ToolWindowType.SolutionPackager:
                return(GetConfigProfiles(projectPath, spklConfig.solutions));

            case ToolWindowType.WebResourceDeployer:
                return(GetConfigProfiles(projectPath, spklConfig.webresources));

            default:
                return(null);
            }
        }
コード例 #2
0
        /// <summary>Gets the existing or creates a new configuration file.</summary>
        /// <param name="project">The project.</param>
        /// <param name="isRetry">if set to <c>true</c> [is retry].</param>
        /// <returns>Configuration file.</returns>
        public static SpklConfig GetSpklConfigFile(Project project, bool isRetry = false)
        {
            var projectPath = ProjectWorker.GetProjectPath(project);
            var path = Path.Combine(projectPath, ExtensionConstants.SpklConfigFile);

            ExLogger.LogToFile(Logger, $"{Resource.Message_ReadingFile}: {path}", LogLevel.Info);

            try
            {
                SpklConfig spklConfig;
                using (var file = File.OpenText(path))
                {
                    var serializer = new JsonSerializer();
                    spklConfig = (SpklConfig)serializer.Deserialize(file, typeof(SpklConfig));
                }

                return spklConfig;
            }
            catch (Exception ex)
            {
                ExceptionHandler.LogException(Logger, $"{Resource.ErrorMessage_UnableReadDeserializeConfig}: {path}", ex);
                MessageBox.Show($"{Resource.ErrorMessage_UnableReadDeserializeConfig}: {path}");

                if (!isRetry)
                    return RecreateConfig(project, path);

                throw;
            }
        }
コード例 #3
0
        public static SpklConfig GetSpklConfigFile(Project project, bool isRetry = false)
        {
            string projectPath = ProjectWorker.GetProjectPath(project);
            string path        = Path.Combine(projectPath, ExtensionConstants.SpklConfigFile);

            try
            {
                SpklConfig spklConfig;
                using (StreamReader file = File.OpenText(path))
                {
                    JsonSerializer serializer = new JsonSerializer();
                    spklConfig = (SpklConfig)serializer.Deserialize(file, typeof(SpklConfig));
                }

                return(spklConfig);
            }
            catch (Exception ex)
            {
                ExceptionHandler.LogException(Logger, $"{Resource.ErrorMessage_UnableReadDeserializeConfig}: {path}", ex);
                MessageBox.Show($"{Resource.ErrorMessage_UnableReadDeserializeConfig}: {path}");

                if (!isRetry)
                {
                    return(RecreateConfig(project, path));
                }

                throw;
            }
        }
コード例 #4
0
        private void PostHandleTypeScriptProject(Project project)
        {
            NpmProcessor.InstallPackage("@types/xrm", _typesXrmVersion, ProjectWorker.GetProjectPath(project), true);

            _dte.ExecuteCommand("ProjectandSolutionContextMenus.CrossProjectMultiItem.RefreshFolder");
        }
コード例 #5
0
        public static ObservableCollection <WebResourceItem> HandleSpklMappings(Project project, string profile, ObservableCollection <WebResourceItem> webResourceItems)
        {
            var spklConfig = D365DeveloperExtensions.Core.Config.Mapping.GetSpklConfigFile(project);

            var mappedWebResources = GetSpklConfigWebresourceFiles(profile, spklConfig);

            if (mappedWebResources == null)
            {
                return(webResourceItems);
            }

            //Lock mappings where CRM web resource was deleted
            foreach (var spklConfigWebresourceFile in mappedWebResources)
            {
                if (webResourceItems.Count(w => w.Name == spklConfigWebresourceFile.uniquename) == 0)
                {
                    webResourceItems.Where(w => w.Name == spklConfigWebresourceFile.uniquename).ToList()
                    .ForEach(ww => ww.Locked = true);
                }
            }

            //Add bound file & description from mapping
            foreach (var spklConfigWebresourceFile in mappedWebResources)
            {
                if (webResourceItems.Count(w => w.Name == spklConfigWebresourceFile.uniquename) <= 0)
                {
                    continue;
                }

                var matches = webResourceItems.Where(w => w.Name == spklConfigWebresourceFile.uniquename).ToList();
                foreach (var match in matches)
                {
                    match.Description = string.IsNullOrEmpty(spklConfigWebresourceFile.description)
                        ? null
                        : spklConfigWebresourceFile.description;
                    match.BoundFile = string.IsNullOrEmpty(spklConfigWebresourceFile.ts)
                        ? spklConfigWebresourceFile.file
                        : spklConfigWebresourceFile.ts;
                }
            }

            //Lock mappings where project file was deleted
            foreach (var spklConfigWebresourceFile in mappedWebResources)
            {
                var mappedFilePath = FileSystem.BoundFileToLocalPath(spklConfigWebresourceFile.file, project.FullName);
                var relativePath   = ProjectItemWorker.GetRelativePathFromPath(ProjectWorker.GetProjectPath(project), mappedFilePath);
                var inProject      = ProjectWorker.IsFileInProjectFile(project.FullName, relativePath);
                if (File.Exists(mappedFilePath) && inProject)
                {
                    continue;
                }

                if (!string.IsNullOrEmpty(spklConfigWebresourceFile.ts))
                {
                    mappedFilePath = FileSystem.BoundFileToLocalPath(spklConfigWebresourceFile.ts, project.FullName);
                }
                if (File.Exists(mappedFilePath) && inProject)
                {
                    continue;
                }

                webResourceItems.Where(w => w.BoundFile == spklConfigWebresourceFile.file).ToList().ForEach(w => w.Locked = true);
            }

            return(webResourceItems);
        }