Walkthrough: Retrieving Project Properties (C#)
This walkthrough guides you through the steps of creating a managed VSPackage that displays project properties in a tool window. You can create a sample managed VSPackage using the Visual Studio Integration Package Wizard. Use automation with the resulting VSPackage to display project properties in a tool window. Carry out the following steps to create a managed VSPackage with a tool window and then extend it with automation:
-
Create the managed VSPackage.
-
Call the automation model to display project properties in a tool window.
To create a managed VSPackage
-
Create a new Visual Studio VSPackage project named ProjectProps using the Visual Studio Integration Package wizard. Go to step 2 in this procedure when you get to the Select a Programming Language page.
For more information on creating a managed VSPackage, see How to: Create VSPackages (C#).
-
In the Select a Programming Language page, set the language to Visual C#.
-
Leave the default values as-is in the Basic VSPackage Information page.
-
In the Select VSPackage Options page, select the check boxes next to the Menu Command and Tool Window options.
-
In the Command Options page, enter My Toolbox.
-
In the Tool Window Options page, enter ProjectProps Tool Window.
-
Click the Finish button.
The wizard generates a managed project ProjectProps.
-
Build the solution and verify that it compiles without errors.
To call the automation model to display project properties in a tool window
-
In the Visual Studio Solution Explorer window, right-click the ProjectProps project node and select Add Reference.
-
In the .NET tab view of the Add Reference dialog box, double-click EnvDTE and then click OK.
This establishes a reference to the EnvDTE namespace.
-
Add the following line at the top of the VSPkg.cs file:
using EnvDTE;
-
Add the following line at the top of the body of the ProjectProps class:
public static EnvDTE.DTE dte;
-
Add the following line at the top of the body of the ShowToolWindow method:
dte = (DTE)GetService(typeof(DTE));
This code uses GetService method to get a DTE automation object that represents the Visual Studio environment.
-
Open MyControl.cs with the Visual Studio designer and remove the Click Me! button inserted by the Visual Studio Integration Package Wizard.
-
Open MyControl.cs with the source code editor. Add the following line at the top of the body of the MyControl class:
private TreeView treeView1;
-
Replace the body of the MyControl constructor with the following lines:
public MyControl() { // This call is required by the Windows.Forms Form Designer. InitializeComponent(); // // treeView1 // this.treeView1 = new System.Windows.Forms.TreeView(); this.SuspendLayout(); this.treeView1.Location = new System.Drawing.Point(20, 20); EnvDTE.Project project; project = ProjectProps.dte.Solution.Projects.Item(1); int nodeNum = 0; this.treeView1.Name = "ProjectPropsTree"; this.treeView1.Nodes.Add(new System.Windows.Forms.TreeNode(project.Name + " Properties")); foreach (EnvDTE.Property property in project.Properties) { System.Windows.Forms.TreeNode node = new System.Windows.Forms.TreeNode("Node" + nodeNum); node.Name = "Node" + nodeNum++; node.Text = property.Name; treeView1.Nodes[0].Nodes.Add(node); } this.treeView1.Size = new System.Drawing.Size(250, 500); this.treeView1.TabIndex = 1; this.Controls.Add(this.treeView1); this.ResumeLayout(false); }This code uses DTE automation objects to retrieve the project properties and to dynamically populate the tree control inside the tool window with the project properties name values.
-
Build the ProjectProps project.
-
Run the ProjectProps project by pressing the keyboard shortcut, F5 or CTRL+F5 to launch the Visual Studio experimental build.
Note Both versions of Visual Studio are open at this time.
-
In Visual Studio Exp, create or open any project.
-
On the View menu, point to Other Windows and select ProjectProps Tool Window.
You should see the tree control inside the tool window with the project properties name values.