public void RunStarted(object automationObject, Dictionary <string, string> replacementsDictionary, WizardRunKind runKind, object[] customParams)
    {
        _dte = (DTE)automationObject;



        ProjectItem rulesFolder = _dte.GetOrCreateFolder();

        _currentProject = rulesFolder.ContainingProject;

        _rootNamespace = rulesFolder.ContainingProject.Properties.Item("DefaultNamespace").Value.ToString();

        IXamlPropertyRuleContext context = XamlPropertyRuleFactory.CreateXamlPropertyRuleContext();

        WriteXamlPropertyRuleFile(rulesFolder, context.AnalyzerReferenceContent, "AnalyzerReference.xaml");
        WriteXamlPropertyRuleFile(rulesFolder, context.AppDesignerContent, "AppDesigner.xaml");
        WriteXamlPropertyRuleFile(rulesFolder, context.AssemblyInfoContent, "AssemblyInfo.xaml");
        WriteXamlPropertyRuleFile(rulesFolder, context.AssemblyReferenceContent, "AssemblyReference.xaml");
        WriteXamlPropertyRuleFile(rulesFolder, context.CompilerCommandLineArgsContent, "CompilerCommandLineArgs.xaml");
        WriteXamlPropertyRuleFile(rulesFolder, context.COMReferenceContent, "COMReference.xaml");
        WriteXamlPropertyRuleFile(rulesFolder, context.ConfigurationGeneralContent, "ConfigurationGeneral.xaml");
        WriteXamlPropertyRuleFile(rulesFolder, context.ConfigurationGeneralFileContent, "ConfigurationGeneralFile.xaml");
        WriteXamlPropertyRuleFile(rulesFolder, context.ContentContent, "Content.xaml");


        WriteXamlPropertyRuleFile(rulesFolder, context.CSharpContent, "CSharp.xaml");
        WriteXamlPropertyRuleFile(rulesFolder, context.DebuggerGeneralContent, "DebuggerGeneral.xaml");
        WriteXamlPropertyRuleFile(rulesFolder, context.DotNetCliToolReferenceContent, "DotNetCliToolReference.xaml");
        WriteXamlPropertyRuleFile(rulesFolder, context.EmbeddedResourceContent, "EmbeddedResource.xaml");
        WriteXamlPropertyRuleFile(rulesFolder, context.FolderContent, "Folder.xaml");

        WriteXamlPropertyRuleFile(rulesFolder, context.NoneContent, "None.xaml");
        WriteXamlPropertyRuleFile(rulesFolder, context.NuGetRestoreContent, "NuGetRestore.xaml");
        WriteXamlPropertyRuleFile(rulesFolder, context.PackageReferenceContent, "PackageReference.xaml");
        WriteXamlPropertyRuleFile(rulesFolder, context.ProjectDebuggerContent, "ProjectDebugger.xaml");

        WriteXamlPropertyRuleFile(rulesFolder, context.ProjectReferenceContent, "ProjectReference.xaml");
        WriteXamlPropertyRuleFile(rulesFolder, context.PSDbgContent, "PSDbg.xaml");
        WriteXamlPropertyRuleFile(rulesFolder, context.ResolvedAnalyzerReferenceContent, "ResolvedAnalyzerReference.xaml");
        WriteXamlPropertyRuleFile(rulesFolder, context.ResolvedAssemblyReferenceContent, "ResolvedAssemblyReference.xaml");
        WriteXamlPropertyRuleFile(rulesFolder, context.ResolvedCOMReferenceContent, "ResolvedCOMReference.xaml");
        WriteXamlPropertyRuleFile(rulesFolder, context.ResolvedPackageReferenceContent, "ResolvedPackageReference.xaml");
        WriteXamlPropertyRuleFile(rulesFolder, context.ResolvedProjectReferenceContent, "ResolvedProjectReference.xaml");
        WriteXamlPropertyRuleFile(rulesFolder, context.ResolvedSdkReferenceContent, "ResolvedSdkReference.xaml");
        WriteXamlPropertyRuleFile(rulesFolder, context.SdkReferenceContent, "SdkReference.xaml");
        WriteXamlPropertyRuleFile(rulesFolder, context.SourceControlContent, "SourceControl.xaml");
        WriteXamlPropertyRuleFile(rulesFolder, context.SpecialFolderContent, "SpecialFolder.xaml");
        WriteXamlPropertyRuleFile(rulesFolder, context.SubProjectContent, "SubProject.xaml");



        WriteXamlPropertyRuleNoCodeBehindFile(rulesFolder, context.GeneralBrowseObjectContent, "GeneralBrowseObject.xaml");
        WriteXamlPropertyRuleNoCodeBehindFile(rulesFolder, context.CSharpBrowseObjectContent, "CSharpBrowseObject.xaml");
        WriteXamlPropertyRuleProjectItemsSchemaFile(rulesFolder, context.ProjectItemsSchemaContent, "ProjectItemsSchema.xaml");
        WriteXamlPropertyRuleProjectItemsSchemaFile(rulesFolder, context.CSharpProjectItemsSchemaContent, "CSharpProjectItemsSchema.xaml");
    }
        protected override void RunStartedCore(Dictionary <string, string> replacementsDictionary)
        {
            using (ThreadedWaitDialogProgressScope scope = new ThreadedWaitDialogProgressScope("Generating XamlPropertyRules"))
            {
                ProjectItem rulesFolder          = GetOrCreateRulesFolder();
                IXamlPropertyRuleContext context = XamlPropertyRuleFactory.CreateXamlPropertyRuleContext();

                XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.AnalyzerReferenceContent, "AnalyzerReference.xaml");
                XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.AppDesignerContent, "AppDesigner.xaml");
                XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.AssemblyInfoContent, "AssemblyInfo.xaml");
                XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.AssemblyReferenceContent, "AssemblyReference.xaml");
                XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.CompilerCommandLineArgsContent, "CompilerCommandLineArgs.xaml");
                XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.COMReferenceContent, "COMReference.xaml");
                XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.ConfigurationGeneralContent, "ConfigurationGeneral.xaml");
                XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.ConfigurationGeneralFileContent, "ConfigurationGeneralFile.xaml");
                XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.ContentContent, "Content.xaml");
                XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.CSharpContent, "CSharp.xaml");
                XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.DebuggerGeneralContent, "DebuggerGeneral.xaml");
                XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.DotNetCliToolReferenceContent, "DotNetCliToolReference.xaml");
                XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.EmbeddedResourceContent, "EmbeddedResource.xaml");
                XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.FolderContent, "Folder.xaml");
                XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.NoneContent, "None.xaml");
                XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.NuGetRestoreContent, "NuGetRestore.xaml");
                XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.PackageReferenceContent, "PackageReference.xaml");
                XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.ProjectDebuggerContent, "ProjectDebugger.xaml");
                XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.ProjectReferenceContent, "ProjectReference.xaml");
                XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.PSDbgContent, "PSDbg.xaml");
                XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.ResolvedAnalyzerReferenceContent, "ResolvedAnalyzerReference.xaml");
                XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.ResolvedAssemblyReferenceContent, "ResolvedAssemblyReference.xaml");
                XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.ResolvedCOMReferenceContent, "ResolvedCOMReference.xaml");
                XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.ResolvedPackageReferenceContent, "ResolvedPackageReference.xaml");
                XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.ResolvedProjectReferenceContent, "ResolvedProjectReference.xaml");
                XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.ResolvedSdkReferenceContent, "ResolvedSdkReference.xaml");
                XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.SdkReferenceContent, "SdkReference.xaml");
                XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.SourceControlContent, "SourceControl.xaml");
                XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.SpecialFolderContent, "SpecialFolder.xaml");
                XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.SubProjectContent, "SubProject.xaml");


                XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.GeneralBrowseObjectContent, "GeneralBrowseObject.xaml", XamlPropertyRuleOption.XamlPropertyRuleNoCodeBehind);
                XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.CSharpBrowseObjectContent, "CSharpBrowseObject.xaml", XamlPropertyRuleOption.XamlPropertyRuleNoCodeBehind);
                XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.ProjectItemsSchemaContent, "ProjectItemsSchema.xaml", XamlPropertyRuleOption.XamlPropertyRuleProjectItemsSchema);
                XamlPropertyRuleGenerator.GenerateXamlPropertyRule(scope, rulesFolder, context.CSharpProjectItemsSchemaContent, "CSharpProjectItemsSchema.xaml", XamlPropertyRuleOption.XamlPropertyRuleProjectItemsSchema);
            }
        }