IVCCollection Interface
Visual Studio 2005
An IVCCollection object contains the functionality that can be exercised on a collections object.
Namespace: Microsoft.VisualStudio.VCProjectEngine
Assembly: Microsoft.VisualStudio.VCProjectEngine (in microsoft.visualstudio.vcprojectengine.dll)
Assembly: Microsoft.VisualStudio.VCProjectEngine (in microsoft.visualstudio.vcprojectengine.dll)
'Declaration <GuidAttribute("238B5170-2429-11D7-8BF6-00B0D03DAA06")> _ Public Interface IVCCollection Inherits IEnumerable 'Usage Dim instance As IVCCollection
/** @attribute GuidAttribute("238B5170-2429-11D7-8BF6-00B0D03DAA06") */
public interface IVCCollection extends IEnumerable
GuidAttribute("238B5170-2429-11D7-8BF6-00B0D03DAA06") public interface IVCCollection extends IEnumerable
The following example demonstrates how to use the EnablePREfast and AdditionalOptions properties to set the /analyze:WX- switch. (Both properties are required to do this.) Specifying /analyze:WX- means that code analysis warnings will not be treated as errors when compiling with /WX. For more information, see /analyze (Enterprise Code Analysis).
To run this example, enter and run this example as outlined in How to: Compile and Run the Automation Object Model Code Examples. Then, in the new instance of Visual Studio, load a Visual C++ project and use the Add-in Manager to activate the add-in.
' Add reference to Microsoft.VisualStudio.VCProjectEngine. Imports System Imports EnvDTE Imports EnvDTE80 Imports System.Diagnostics Imports Microsoft.VisualStudio.VCProjectEngine Imports System.Text Sub EnablePREfastExample(ByVal dte As DTE2) Dim prj As VCProject Dim cfgs, tools As IVCCollection Dim cfg As VCConfiguration Dim tool As VCCLCompilerTool Dim sb As New StringBuilder prj = CType(dte.Solution.Projects.Item(1).Object, _ Microsoft.VisualStudio.VCProjectEngine.VCProject) cfgs = CType(prj.Configurations, _ Microsoft.VisualStudio.VCProjectEngine.IVCCollection) cfg = CType(cfgs.Item(1), _ Microsoft.VisualStudio.VCProjectEngine.VCConfiguration) tool = CType(cfg.Tools("VCCLCompilerTool"), _ Microsoft.VisualStudio.VCProjectEngine.VCCLCompilerTool) sb.Length = 0 sb.Append("Current project PREfast setting: " _ & tool.EnablePREfast & Environment.NewLine) sb.Append("Flag: " & tool.AdditionalOptions) MsgBox(sb.ToString) ' Toggle PREfast setting. If Not (tool.EnablePREfast = True) Then ' PREfast is not enabled. Turn it and the WX- flag on. tool.EnablePREfast = True tool.AdditionalOptions = "/analyze:WX-" Else ' Toggle the opposite. tool.EnablePREfast = False tool.AdditionalOptions = "/analyze:WX" End If sb.Length = 0 sb.Append("New project PREfast setting: " _ & tool.EnablePREfast & Environment.NewLine) sb.Append("Flag: " & tool.AdditionalOptions) MsgBox(sb.ToString) End Sub // Add references to Microsoft.VisualStudio.VCProjectEngine and // System.Windows.Forms. using System; using Extensibility; using EnvDTE; using EnvDTE80; using Microsoft.VisualStudio.VCProjectEngine; using System.Text; using System.Windows.Forms; public void EnablePREfastExample(DTE2 dte) { try { VCProject prj; IVCCollection cfgs, tools; VCConfiguration cfg; VCCLCompilerTool tool; StringBuilder sb = new StringBuilder(); prj = (Microsoft.VisualStudio.VCProjectEngine.VCProject) dte.Solution.Projects.Item(1).Object; cfgs = (Microsoft.VisualStudio.VCProjectEngine.IVCCollection) prj.Configurations; cfg = (Microsoft.VisualStudio.VCProjectEngine.VCConfiguration) cfgs.Item(1); tools = (Microsoft.VisualStudio.VCProjectEngine.IVCCollection) cfg.Tools; tool = (Microsoft.VisualStudio.VCProjectEngine.VCCLCompilerTool) tools.Item("VCCLCompilerTool"); sb.Length = 0; sb.Append("Current project PREfast setting: " + tool.EnablePREfast + Environment.NewLine); sb.Append("Flag: " + tool.AdditionalOptions); MessageBox.Show(sb.ToString()); // Toggle PREfast setting. if (!(tool.EnablePREfast == true)) { // PREfast is not enabled. Turn it and the WX- flag on. tool.EnablePREfast = true; tool.AdditionalOptions = "/analyze:WX-"; } else { // Toggle the opposite. tool.EnablePREfast = false; tool.AdditionalOptions = "/analyze:WX"; } sb.Length = 0; sb.Append("New project PREfast setting: " + tool.EnablePREfast + Environment.NewLine); sb.Append("Flag: " + tool.AdditionalOptions); MessageBox.Show(sb.ToString()); } catch (System.Exception errmsg) { MessageBox.Show("ERROR! " + errmsg.Message); } }