Cómo: Manipular la propiedad Imports de los proyectos de Visual Basic
Actualización: noviembre 2007
La mayoría de los métodos y propiedades de VSProject2 se aplican a proyectos de Visual C#, Visual Basic y Visual J#. Para obtener más información, vea Cómo: Manipular proyectos de Visual Basic y C# con el objeto VSProject2. La propiedad Imports del objeto VSProject2 es específica de los proyectos de Visual Basic. Proporciona acceso al objeto Imports con métodos para agregar y enumerar la colección Imports.
Los siguientes pasos explican cómo controlar mediante programación la propiedad Imports en un proyecto de Visual Basic, utilizando un complemento de Visual Studio.
Nota: |
---|
Los cuadros de diálogo y comandos de menú que se ven pueden diferir de los descritos en la Ayuda, en función de los valores de configuración o de edición activos. Estos procedimientos se desarrollaron con la Configuración general de desarrollo activa. Para cambiar la configuración, elija la opción Importar y exportar configuraciones del menú Herramientas. Para obtener más información, vea Valores de configuración de Visual Studio. |
Para utilizar el objeto VSProject2 para controlar los proyectos de Visual Basic
Cree un proyecto de complemento de Visual Studio mediante Visual C#.
En el menú Proyecto, haga clic en Agregar referencia y luego en la ficha .NET, seleccione VSLangProj, VSLangProj2 y VSLangProj80 y, a continuación, haga clic en Aceptar.
Cree una carpeta en el equipo:
<Installation Root>\UserFiles\MyProjects\MyTestProject
En este ejemplo, el <Installation Root> es "C":.
Agregue las siguientes instrucciones using al principio del archivo Connect.cs.
using VSLangProj; using VSLangProj2; using VSLangProj80;
Agregue la llamada siguiente al método OnConnection.
public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) { _applicationObject = (DTE2)application; _addInInstance = (AddIn)addInInst; VBVSProj2Manip(_applicationObject); }
Agregue la declaración del método CSVSProj2Manip directamente después del método OnConnection.
public void CSVSProj2Manip(DTE2 dte) { }
Agregue las siguientes declaraciones al principio del método.
Solution2 soln = (Solution2)_applicationObject.Solution; String vbTemplatePath; String vbPrjPath; Project proj; VSProject2 vsproj; Imports impCollection;
Utilice AddFromTemplate para crear un proyecto de Visual C#.
- La sintaxis para obtener las plantillas es EnvDTE80.Solution2.GetProjectTemplate("WindowsApplication.zip", "VisualBasic"), donde el nombre "WindowsApplication.zip" se obtiene del archivo WindowsApplication.zip, que se encuentra en la carpeta <Installation Root>\Archivos de programa\Microsoft Visual Studio 8\Common7\IDE\ProjectTemplates\VisualBasic\Windows\1033. En todos los tipos de proyectos de Visual Studio, estos archivos se encuentran en la carpeta <Installation Root>\Archivos de programa\Microsoft Visual Studio 8\Common7\IDE\ProjectTemplates\Language. "VisualBasic" especifica que éste es un proyecto de Visual Basic.
// Make sure you create the folders that // make up the file path // on your computer. You can replace // this with your own file path. vbPrjPath = "C:\\UserFiles\\MyProjects\\MyTestProject"; // Get the project template path for a C# windows // application. vbTemplatePath = soln.GetProjectTemplate("WindowsApplication.zip", "VisualBasic"); // Create a new Windows application by using the // template obtained above. soln.AddFromTemplate(vbTemplatePath, vbPrjPath, "Test2VBProj", false);
Agregue el código siguiente para mostrar el uso del objeto Imports, una vez que se obtiene mediante la propiedad Imports.
proj = soln.Projects.Item(1); // Get a reference to the VSProject2 object. vsproj = (VSProject2)proj.Object; // Add a reference to System.Security.dll. MessageBox.Show("Adding a reference to System.Security.dll"); // Remove the <version number> in the following path // and replace it with one of the version // number folders that appear // in <installation root>\WINDOWS\Microsoft.NET\Framework // folder vsproj.References.Add ("C:\\WINDOWS\\Microsoft.NET\\Framework\\ <version number>\\System.Security.dll"); impCollection = vsproj.Imports; MessageBox.Show("The number of imports in this project is: " + impCollection.Count.ToString() + "\n"); MessageBox.Show ("Adding System.Security to the Imports collection."); impCollection.Add("System.Security"); MessageBox.Show("The number of imports in this project is now: " + impCollection.Count.ToString() + "\n"); String temp = null; for (int i = 1; i <= impCollection.Count; i++) { temp = temp + impCollection.Item(i).ToString() + "\n"; } MessageBox.Show("The Imports in this project are:" + "\n" + temp);
El método VBVSProj2Manip utiliza el objeto VSProject2 para:
Agregar una referencia a System.Security.dll utilizando References.
Obtener un identificador para Imports utilizando la propiedad Imports.
Los métodos de Imports se utilizan para:
Agregar System.Security a la colección Imports utilizando Add.
Mostrar el número de elementos en la colección Imports utilizando la propiedad Count.
Mostrar el nombre de los elementos de la colección Imports utilizando el método Item.
La sección de ejemplo muestra el código completo, incluido un bloque try-catch para todo el método.
Para generar el complemento, haga clic en la opción Generar solución del menú Generar.
Abra un proyecto de Visual Basic en el entorno de desarrollo integrado (IDE) de Visual Studio.
En el menú Herramientas, haga clic en Administrador de complementos y seleccione el complemento del cuadro de diálogo Administrador de complementos. Haga clic en Aceptar para ejecutar el complemento.
Ejemplo
El ejemplo siguiente es un complemento básico de Visual Studio que muestra cómo utilizar la propiedad Imports utilizando la automatización de Visual Studio.
using System;
using System;
using Extensibility;
using EnvDTE;
using EnvDTE80;
using System.Windows.Forms;
using VSLangProj;
using VSLangProj2;
using VSLangProj80;
public void OnConnection(object application,
ext_ConnectMode connectMode, object addInInst, ref Array custom)
{
_applicationObject = (DTE2)application;
_addInInstance = (AddIn)addInInst;
VBVSProj2Manip(_applicationObject);
}
public void VBVSProj2Manip(DTE2 dte)
{
try
{
Solution2 soln = (Solution2)_applicationObject.Solution;
String vbTemplatePath;
String vbPrjPath;
Project proj;
VSProject2 vsproj;
Imports impCollection;
// Make sure you create the folders that make up the file path
// on your computer. You can replace this with
// your own file path.
vbPrjPath = "C:\\UserFiles\\MyProjects\\MyTestProject";
// Get the project template path for a Visual Basic windows
// application.
vbTemplatePath = soln.GetProjectTemplate("WindowsApplication.zip", "VisualBasic");
// Create a new Windows application by using the
// template obtained above.
soln.AddFromTemplate(vbTemplatePath, vbPrjPath,
"Test2VBProj", false);
proj = soln.Projects.Item(1);
// Cast to the VSProject2 object.
vsproj = (VSProject2)proj.Object;
// Add a reference to System.Security.dll.
MessageBox.Show("Adding a reference to System.Security.dll");
// Remove the <version number> in the following path
// and replace it with one of the version
// number folders that appear
// in <installation root>\WINDOWS\Microsoft.NET\Framework
// folder
vsproj.References.Add
("C:\\WINDOWS\\Microsoft.NET\\Framework\\
<version number>\\System.Security.dll");
vsproj.Refresh();
impCollection = vsproj.Imports;
MessageBox.Show("The number of imports in this project is: "
+ impCollection.Count.ToString() + "\n");
MessageBox.Show("Adding System.Security to the
Imports collection.");
impCollection.Add("System.Security");
MessageBox.Show("The number of imports in this project is now:
" + impCollection.Count.ToString() + "\n");
String temp = null;
for (int i = 1; i <= impCollection.Count; i++)
{
temp = temp + impCollection.Item(i).ToString() + "\n";
}
MessageBox.Show("The Imports in this project are:" + "\n"
+ temp);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Imports System
Imports Microsoft.VisualStudio.CommandBars
Imports Extensibility
Imports EnvDTE
Imports EnvDTE80
Imports VSLangProj
Imports VSLangProj2
Imports VSLangProj80
Public Sub OnConnection(ByVal application As Object, _
ByVal connectMode As ext_ConnectMode, ByVal addInInst As Object, _
ByRef custom As Array) Implements IDTExtensibility2.OnConnection
_applicationObject = CType(application, DTE2)
_addInInstance = CType(addInInst, AddIn)
VBVSProj2Manip(_applicationObject)
End Sub
Sub VBVSProj2Manip(ByVal dte As DTE2)
Try
Dim soln As Solution2 = CType(_applicationObject.Solution, _
Solution2)
Dim vbTemplatePath As String
Dim vbPrjPath As String
Dim proj As Project
Dim vsproj As VSProject2
Dim impCollection As [Imports]
' Create this or your own file path on your computer.
' The file path needs to exist before you run this add-in.
vbPrjPath = "C:\UserFiles\MyProjects\MyTestProject"
' Get the project template path for a Visual Basic
' Windows application.
vbTemplatePath = soln.GetProjectTemplate _ ("WindowsApplication.zip", "VisualBasic")
' Create a new Windows Application by using the
' template obtained above.
soln.AddFromTemplate(vbTemplatePath, vbPrjPath, _
"Test2JSProj", False)
proj = soln.Projects.Item(1)
' Cast the project to a VSProject2.
vsproj = CType(proj.Object, VSProject2)
' Add a reference to System.Security.dll.
MsgBox("Adding a reference to System.Security.dll")
' Remove the <version number> in the following path
' and replace it with one of the version
' number folders that appear
' in <installation root>\WINDOWS\Microsoft.NET\Framework
' folder
vsproj.References.Add _
("C:\WINDOWS\Microsoft.NET\Framework\ _
<version number>\System.Security.dll")
impCollection = vsproj.Imports
MsgBox("The number of imports in this project is: " & vbCr _
& impCollection.Count.ToString())
MsgBox("Adding System.Security to the Imports collection.")
impCollection.Add("System.Security")
MsgBox("The number of imports in this project is now: " _
& vbCr & impCollection.Count.ToString())
Dim temp As String = ""
For i As Integer = 1 To impCollection.Count
temp = temp & impCollection.Item(i).ToString() & vbCr
Next i
MsgBox("The Imports in this project are:" & vbCr & temp)
Catch ex As System.Exception
MsgBox(ex.ToString)
End Try
End Sub
Compilar el código
Para compilar este código, cree un nuevo proyecto de complemento de Visual Studio y reemplace el código del método OnConnection por el código del ejemplo. Para obtener información sobre cómo ejecutar un complemento, vea Cómo: Controlar complementos con el Administrador de complementos.
Vea también
Conceptos
Introducción al objeto VSProject2