Exemplo n.º 1
0
        public /*protected internal, but public for FSharp.Project.dll*/ void RunVsTemplateWizard(ProjectElement element, bool silent)
        {
            ProjectElement elementToUse = (element == null) ? this.nestedProjectElement : element;

            if (elementToUse == null)
            {
                throw new ArgumentNullException("element");
            }
            this.nestedProjectElement = elementToUse;

            Automation.OAProject oaProject = GetAutomationObject() as Automation.OAProject;
            if (oaProject == null || oaProject.ProjectItems == null)
            {
                throw new System.InvalidOperationException(SR.GetString(SR.InvalidAutomationObject, CultureInfo.CurrentUICulture));
            }
            Debug.Assert(oaProject.Object != null, "The project automation object should have set the Object to the SolutionFolder");
            Automation.OASolutionFolder <ProjectContainerNode> folder = oaProject.Object as Automation.OASolutionFolder <ProjectContainerNode>;

            // Prepare the parameters to pass to RunWizardFile
            string destination = elementToUse.GetFullPathForElement();
            string template    = this.GetProjectTemplatePath(elementToUse);

            object[] wizParams = new object[7];
            wizParams[0] = EnvDTE.Constants.vsWizardAddSubProject;
            wizParams[1] = Path.GetFileNameWithoutExtension(destination);
            wizParams[2] = oaProject.ProjectItems;
            wizParams[3] = Path.GetDirectoryName(destination);
            wizParams[4] = Path.GetFileNameWithoutExtension(destination);
            wizParams[5] = Path.GetDirectoryName(folder.DTE.FullName); //VS install dir
            wizParams[6] = silent;

            IVsDetermineWizardTrust wizardTrust = this.GetService(typeof(SVsDetermineWizardTrust)) as IVsDetermineWizardTrust;

            if (wizardTrust != null)
            {
                Guid guidProjectAdding = Guid.Empty;

                // In case of a project template an empty guid should be added as the guid parameter. See env\msenv\core\newtree.h IsTrustedTemplate method definition.
                wizardTrust.OnWizardInitiated(template, ref guidProjectAdding);
            }

            try
            {
                // Make the call to execute the wizard. This should cause AddNestedProjectFromTemplate to be
                // called back with the correct set of parameters.
                EnvDTE.IVsExtensibility extensibilityService = (EnvDTE.IVsExtensibility)GetService(typeof(EnvDTE.IVsExtensibility));
                EnvDTE.wizardResult     result = extensibilityService.RunWizardFile(template, 0, ref wizParams);
                if (result == EnvDTE.wizardResult.wizardResultFailure)
                {
                    throw new COMException();
                }
            }
            finally
            {
                if (wizardTrust != null)
                {
                    wizardTrust.OnWizardCompleted();
                }
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">The associated project.</param>
 /// <param name="items">A list of items that will make up the items defined by this object.</param>
 /// <param name="nodeWithItems">The node that defines the items.</param>
 internal OANavigableProjectItems(OAProject project, IList<EnvDTE.ProjectItem> items, HierarchyNode nodeWithItems)
 {
     this.items = items;
     this.project = project;
     this.nodeWithItems = nodeWithItems;
 }
Exemplo n.º 3
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">The associated project.</param>
 /// <param name="nodeWithItems">The node that defines the items.</param>
 internal OANavigableProjectItems(OAProject project, HierarchyNode nodeWithItems)
 {
     this.project = project;
     this.nodeWithItems = nodeWithItems;
     this.items = this.GetListOfProjectItems();
 }
Exemplo n.º 4
0
 internal OAFolderItem(OAProject project, FolderNode node)
     : base(project, node)
 {
 }
 internal OAReferenceFolderItem(OAProject project, ReferenceContainerNode node)
     : base(project, node)
 {
 }
Exemplo n.º 6
0
 internal OAProjectItem(OAProject project, T node)
 {
     this.node    = node;
     this.project = project;
 }
Exemplo n.º 7
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">The associated project.</param>
 /// <param name="items">A list of items that will make up the items defined by this object.</param>
 /// <param name="nodeWithItems">The node that defines the items.</param>
 internal OANavigableProjectItems(OAProject project, IList <EnvDTE.ProjectItem> items, HierarchyNode nodeWithItems)
 {
     this.items         = items;
     this.project       = project;
     this.nodeWithItems = nodeWithItems;
 }
Exemplo n.º 8
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="project">The associated project.</param>
 /// <param name="nodeWithItems">The node that defines the items.</param>
 internal OANavigableProjectItems(OAProject project, HierarchyNode nodeWithItems)
 {
     this.project       = project;
     this.nodeWithItems = nodeWithItems;
     this.items         = this.GetListOfProjectItems();
 }
Exemplo n.º 9
0
 internal OAProjectItems(OAProject project, HierarchyNode nodeWithItems)
     : base(project, nodeWithItems)
 {
 }
 internal OAFileItem(OAProject project, FileNode node)
     : base(project, node)
 {
 }
Exemplo n.º 11
0
 internal OAProjectItems(OAProject project, HierarchyNode nodeWithItems)
     : base(project, nodeWithItems)
 {
 }
Exemplo n.º 12
0
 internal OAReferenceItem(OAProject project, ReferenceNode node)
     : base(project, node)
 {
 }