Поделиться через


VSWebSite - интерфейс

Предоставляет свойства и методы проекта веб-сайта.

Пространство имен:  VsWebSite
Сборка:  VsWebSite.Interop (в VsWebSite.Interop.dll)

Синтаксис

'Декларация
<GuidAttribute("70758CA4-91F8-46AD-80A7-73BC21BAE68B")> _
Public Interface VSWebSite
[GuidAttribute("70758CA4-91F8-46AD-80A7-73BC21BAE68B")]
public interface VSWebSite
[GuidAttribute(L"70758CA4-91F8-46AD-80A7-73BC21BAE68B")]
public interface class VSWebSite
[<GuidAttribute("70758CA4-91F8-46AD-80A7-73BC21BAE68B")>]
type VSWebSite =  interface end
public interface VSWebSite

Тип VSWebSite предоставляет следующие члены.

Свойства

  Имя Описание
Открытое свойство CodeFolders Получает коллекцию папок, настроенных как папки кода на веб-сайте.
Открытое свойство DTE Получает ссылку на объект DTE2, содержащий данный проект веб-сайта.
Открытое свойство Project Получает ссылку на веб-сайт в виде объекта Project.
Открытое свойство References Получает объект AssemblyReferences, содержащий ссылки на сборки и проекты текущего веб-сайта.
Открытое свойство TemplatePath Получает полный путь и имя папки, содержащей шаблоны элементов веб-сайта.
Открытое свойство URL Получает URL-адрес, использованный для открытия веб-сайта.
Открытое свойство UserTemplatePath Получает путь к папке шаблонов пользователя для новых элементов проекта.
Открытое свойство VSWebSiteEvents Получает объект VSWebSiteEvents для веб-сайта, который может использоваться для добавления обработчиков событий.
Открытое свойство WebReferences Получает объект WebReferences, содержащий ссылки на веб-службы, используемые веб-сайтом.
Открытое свойство WebServices Получает объект WebServices, содержащий коллекцию веб-служб, предоставляемых данным веб-сайтом.

В начало страницы

Методы

  Имя Описание
Открытый метод AddFromTemplate Создает в проекте веб-сайта новый элемент ProjectItem.
Открытый метод EnsureServerRunning Запускает сервер ASP.NET Development Server и возвращает URL-адрес веб-сайта.
Открытый метод GetUniqueFilename Возвращает уникальное для указанной папки имя файла, используя заданное корневое имя и расширение файла.
Открытый метод PreCompileWeb Компилирует веб-сайт и записывает скомпилированные выходные файлы в указанную папку.
Открытый метод Refresh Обновляет отображаемые сведения с учетом изменений веб-сайта, произведенных вне среды разработки Visual Studio.
Открытый метод WaitUntilReady Блокирует все вызовы методов до завершения работы фоновых процессов.

В начало страницы

Заметки

Интерфейс VSWebSite используется для управления проектами веб-сайтов в макросах и надстройках Visual Studio.

Помимо свойств и методов, представленных в этом классе, существуют еще свойства для проектов веб-сайтов, доступные через класс WebSiteProperties.

Примечание

Предоставляемые этим классом функциональные возможности доступны в версиях Visual Studio, начиная с Visual Studio 2005.Они недоступны в экспресс-выпуске Visual Web Developer.

Примеры

В следующем примере демонстрируется взаимодействие надстройки Visual Studio с проектом веб-сайта. Надстройка использует обработчики событий для внесения в журнал событий записи о добавлении в проект ссылки на сборку или веб-ссылки на веб-службу. Кроме того, при закрытии решения надстройка записывает сводную информацию о каждом проекте веб-сайта в текстовый файл.

При выполнении примера для создания надстройки проекта воспользуйтесь следующей информацией Практическое руководство. Создание надстройки и замените весь код в файле Connect.cs кодом из примера. Помимо этого, потребуется создать ссылку на сборку VsWebSite.Interop.

[C#]

using System;
using System.IO;
using System.Collections;
using System.Diagnostics;
using Extensibility;
using EnvDTE;
using EnvDTE80;
using VsWebSite;

// The object for implementing an Add-in.
public class Connect : IDTExtensibility2
{
    private DTE2 _applicationObject;
    private AddIn _addInInstance;

    // Implements the constructor for the Add-in object.
    // Created by the Add-In Wizard
    public Connect()
    {
    }

    // Event method created by the Add-In Wizard.
    // Occurs when the Add-In connects with the application.
    public void OnConnection(object application, ext_ConnectMode 
        connectMode, object addInInst, ref Array custom)
    {
        _applicationObject = (DTE2)application;
        _addInInstance = (AddIn)addInInst;

        // Attach Solution event handlers
        _applicationObject.DTE.Events.SolutionEvents.Opened 
            += new _dispSolutionEvents_OpenedEventHandler
                (SolutionEvents_Opened);
        _applicationObject.DTE.Events.SolutionEvents.QueryCloseSolution 
            += new _dispSolutionEvents_QueryCloseSolutionEventHandler
                (SolutionEvents_QueryCloseSolution);
    }

    // Custom event method that occurs before a solution is closed.
    private void SolutionEvents_QueryCloseSolution(ref bool fCancel)
    {
        foreach (Project proj in _applicationObject.Solution.Projects)
        {
            // Make sure background compilation is finished
            ((VSWebSite)proj.Object).WaitUntilReady();

            System.Text.StringBuilder strBldr = 
                new System.Text.StringBuilder();

            strBldr.AppendLine("Summary for Web Site: " 
                + ((VSWebSite)proj.Object).URL);
            strBldr.AppendLine("Solution: " 
                + _applicationObject.Solution.FullName);
            strBldr.AppendLine("Web References:");
            foreach (WebReference wref in 
                ((VSWebSite)proj.Object).WebReferences)
                strBldr.AppendLine("    " + wref.Namespace);
            strBldr.AppendLine("Assembly References:");
            foreach (AssemblyReference aref in 
                ((VSWebSite)proj.Object).References)
                strBldr.AppendLine("    " + aref.Name);
            // list the files?

            ((VSWebSite)proj.Object).VSWebSiteEvents.WebReferencesEvents.WebReferenceAdded
                -= WebRefEvents_WebRefAdded;

            string strBody = strBldr.ToString();

            // Save the summary as a text file in the Web site.
            string fName = _applicationObject.FullName;
            fName = fName.Substring(0, fName.Length - 4);
            fName += "." + ((VSWebSite)proj.Object).GetUniqueFilename
                ("/", "ProjectSummary", ".txt");
            if (File.Exists(fName))
                File.Delete(fName);
            StreamWriter sw = File.CreateText(fName);
            sw.Write(strBody);
            sw.Close();
        }
    }

    // Custom event method that occurs when a solution is opened.
    private void SolutionEvents_Opened()
    {
        // When solution is opened, attach event handlers for projects
        foreach (Project proj in _applicationObject.Solution.Projects)
        {   // Only attach event handlers if it is a Web site
            if (proj.Object is VSWebSite)
            {
                ((VSWebSite)proj.Object).VSWebSiteEvents.WebReferencesEvents.WebReferenceAdded +=
                    new _dispWebReferencesEvents_WebReferenceAddedEventHandler
                    (WebRefEvents_WebRefAdded);
                ((VSWebSite)proj.Object).VSWebSiteEvents.AssemblyReferencesEvents.AssemblyReferenceAdded += 
                    new _dispAssemblyReferencesEvents_AssemblyReferenceAddedEventHandler
                    (AssemblyRefsEvents_AssemblyRefAdded);
            }
        }
    }

    // Custom event method that occurs when a Reference is added.
    private void AssemblyRefsEvents_AssemblyRefAdded(AssemblyReference AssemblyRef)
    {
        EventLog appLog = new EventLog();
        appLog.Source = "VSWSTest." + AssemblyRef.ContainingProject.Name;
        appLog.WriteEntry("AssemblyReference added: " + AssemblyRef.Name);
    }
    
    // Custom event method that occurs when a Web Reference is added.
    private void WebRefEvents_WebRefAdded(WebReference webRef)
    {
        EventLog appLog = new EventLog();
        appLog.Source = "VSWSTest." + webRef.ContainingProject.Name;
        appLog.WriteEntry("WebReference added: " + webRef.Namespace);
    }

    #region Required but unused event handlers

    /// <summary>Implements the OnDisconnection method of the IDTExtensibility2 interface. Receives notification that the Add-in is being unloaded.</summary>
    /// <param term='disconnectMode'>Describes how the Add-in is being unloaded.</param>
    /// <param term='custom'>Array of parameters that are host application specific.</param>
    /// <seealso class='IDTExtensibility2' />
    public void OnDisconnection(ext_DisconnectMode disconnectMode, ref Array custom)
    {
    }

    /// <summary>Implements the OnAddInsUpdate method of the IDTExtensibility2 interface. Receives notification when the collection of Add-ins has changed.</summary>
    /// <param term='custom'>Array of parameters that are host application specific.</param>
    /// <seealso class='IDTExtensibility2' />
    public void OnAddInsUpdate(ref Array custom)
    {
    }

    /// <summary>Implements the OnStartupComplete method of the IDTExtensibility2 interface. Receives notification that the host application has completed loading.</summary>
    /// <param term='custom'>Array of parameters that are host application specific.</param>
    /// <seealso class='IDTExtensibility2' />
    public void OnStartupComplete(ref Array custom)
    {
    }

    /// <summary>Implements the OnBeginShutdown method of the IDTExtensibility2 interface. Receives notification that the host application is being unloaded.</summary>
    /// <param term='custom'>Array of parameters that are host application specific.</param>
    /// <seealso class='IDTExtensibility2' />
    public void OnBeginShutdown(ref Array custom)
    {
    }

    #endregion
}

См. также

Ссылки

VsWebSite - пространство имен

EnvDTE

WebSiteProperties

Другие ресурсы

Справочник по автоматизации и возможностям расширения среды

Создание ссылок на сборки автоматизации и объект DTE2

Макросы Visual Studio

Создание надстроек и мастеров