public static IVsHierarchy GetProjectHierarchy(this DTE2 dte)
        {
            Project     project    = dte.GetSelectedProject();
            string      uniqueName = project.UniqueName;
            IVsSolution solution   = (IVsSolution)Package.GetGlobalService(typeof(SVsSolution));

            solution.GetProjectOfUniqueName(uniqueName, out IVsHierarchy hierarchy);
            return(hierarchy);
        }
Пример #2
0
        public static Settings ReadFromJsonFile(DTE2 dte2)
        {
            Project project = dte2.GetSelectedProject();

            if (project == null)
            {
                return(null);
            }

            var configPath = Path.GetFullPath(Path.Combine(project.GetProjectDirectory(), "codegeneratorconfig.json"));

            if (!File.Exists(configPath))
            {
                string dir = Path.GetDirectoryName(configPath);
                if (!Directory.Exists(dir))
                {
                    Directory.CreateDirectory(dir);
                }

                Status.Update("Adding " + configPath + " to project");

                string templateSamplesPath = Path.Combine(DteHelper.AssemblyDirectory(), @"Resources");

                string defaultTemplatePath = Path.Combine(templateSamplesPath, "codegeneratorconfig.json");

                File.Copy(defaultTemplatePath, configPath, true);

                ProjectItem p = project.ProjectItems.AddFromFile(configPath);
            }

            string configurationJson = System.IO.File.ReadAllText(configPath);

            SettingsModel model = JsonConvert.DeserializeObject <SettingsModel>(configurationJson);

            Settings settings = new Settings
            {
                ServerName              = model.ServerName ?? "crm.dynamics.com",
                UseSSL                  = model.UseSSL,
                UseIFD                  = model.UseIFD,
                UseOnline               = model.UseOnline,
                UseOffice365            = model.UseOffice365,
                ServerPort              = model.ServerPort,
                HomeRealm               = model.HomeRealm,
                Domain                  = model.Domain ?? "",
                UseWindowsAuth          = model.UseWindowsAuth,
                IsActive                = model.IsActive,
                CrmOrg                  = model.CrmOrg,
                EntitiesToIncludeString = model.EntitiesToIncludeString,
                IncludeNonStandard      = model.IncludeNonStandard,
                Dirty = false
            };

            return(settings);
        }
Пример #3
0
        public static void WriteToJsonFile(DTE2 dte2, Settings settings)
        {
            SettingsModel model = new SettingsModel
            {
                Domain     = settings.Domain,
                ServerName = settings.ServerName,
                UseIFD     = settings.UseIFD,
                UseOnline  = settings.UseOnline,
                UseSSL     = settings.CanUseSSL,
                EntitiesToIncludeString = settings.EntitiesToIncludeString,
                CrmOrg             = settings.CrmOrg,
                HomeRealm          = settings.HomeRealm,
                IncludeNonStandard = settings.IncludeNonStandard,
                UseWindowsAuth     = settings.UseWindowsAuth
            };

            string jsonConf = JsonConvert.SerializeObject(model);

            Project project = dte2.GetSelectedProject();

            System.IO.File.WriteAllText(System.IO.Path.Combine(project.GetProjectDirectory(), "codegeneratorconfig.json"), jsonConf);
        }