Практическое руководство. Использование свойства Imports проектов Visual Basic
Обновлен: Ноябрь 2007
Большинство методов и свойств VSProject2 используются в проектах Visual C# , Visual Basic и Visual J#. Дополнительные сведения см. в разделе Практическое руководство. Операции с проектами Visual Basic и C# с помощью объекта VSProject2. Свойство Imports объекта VSProject2 относится к проектам Visual Basic. Оно обеспечивает доступ к объекту Imports с методами для добавления и перечисления коллекции Imports.
Описанные действия позволяют управлять свойством Imports в проекте Visual Basic программным образом при помощи надстройки Visual Studio.
Примечание. |
---|
Отображаемые диалоговые окна и команды меню могут отличаться от описанных в справке в зависимости от текущих параметров или выпуска среды. Эти процедуры были разработаны с обычными параметрами разработки. Чтобы изменить параметры, выберите пункт Импорт и экспорт параметров в меню Сервис. Дополнительные сведения см. в разделе Параметры Visual Studio. |
Использование объекта VSProject2 для управления проектами Visual Basic
Создайте проект надстройки Visual Studio, используя Visual C#.
В меню Проект щелкните Добавить ссылку, перейдите на вкладку .NET выберите VSLangProj, VSLangProj2 и VSLangProj80, и нажмите кнопку ОК.
Создайте папку на локальном компьютере.
<корневая папка установки>\UserFiles\MyProjects\MyTestProject
В этом примере в качестве <корневой папки установки> используется "C:".
Добавьте в начало файла Connect.cs следующие операторы using.
using VSLangProj; using VSLangProj2; using VSLangProj80;
Добавьте в метод OnConnection следующий вызов метода.
public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) { _applicationObject = (DTE2)application; _addInInstance = (AddIn)addInInst; VBVSProj2Manip(_applicationObject); }
Добавьте объявление метода CSVSProj2Manip сразу после метода OnConnection.
public void CSVSProj2Manip(DTE2 dte) { }
Добавьте следующие объявления в начало метода:
Solution2 soln = (Solution2)_applicationObject.Solution; String vbTemplatePath; String vbPrjPath; Project proj; VSProject2 vsproj; Imports impCollection;
Чтобы создать проектVisual C#, используйте AddFromTemplate.
- Синтаксис для получения шаблонов будет следующим: EnvDTE80.Solution2.GetProjectTemplate("WindowsApplication.zip", "VisualBasic"), где имя "WindowsApplication.zip" берется из файла WindowsApplication.zip, расположенного в папке <корневая папка установки>\Program Files\Microsoft Visual Studio 8\Common7\IDE\ProjectTemplates\VisualBasic\Windows\1033. Для всех типов проектов Visual Studio эти файлы можно найти в папке <корневой каталог установки>\Program Files\Microsoft Visual Studio 8\Common7\IDE\ProjectTemplates\язык. "VisualBasic" определяет, что этот проект является проектом 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);
Добавьте следующий код для демонстрации использования Imports после его получения при помощи свойства 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);
Методы VBVSProj2Manip использует объект VSProject2 для:
Добавления ссылки на System.Security.dll посредством References.
Получения обработчика для Imports при помощи свойства Imports.
Методы в Imports используются для:
Добавления System.Security в коллекцию Imports при помощи Add.
Отображения числа элементов в коллекции Imports при помощи свойства Count.
Отображения имени элементов в коллекции Imports при помощи метода Item.
В разделе примера приведен полный код с блоком try-catch для всего метода.
Чтобы построить надстройку, в меню Построение щелкните Построить решение.
Откройте проект Visual Basic в интегрированной среде разработки (IDE) Visual Studio.
В меню Свойства щелкните Диспетчер надстроек и в диалоговом окне Диспетчер надстроек выберите надстройку. Нажмите ОК для выполнения надстройки.
Пример
Следующий пример представляет собой простую надстройку Visual Studio, которая демонстрирует использование свойства Imports при помощи автоматизации 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
Компиляция кода
Для компиляции кода создайте новый проект надстройки Visual Studio и замените код метода OnConnection кодом из данного примера. Сведения о запуске надстройки см. в разделе Практическое руководство. Управление надстройками с помощью диспетчера надстроек.
См. также
Основные понятия
Знакомство с объектом VSProject2