共用方式為


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 物件,其中包含網站所耗用之 Web 服務的參考。
公用屬性 WebServices 取得 WebServices 物件,其中包含這個網站所公開 (Expose) 之 Web 服務的集合。

回頁首

方法

  名稱 說明
公用方法 AddFromTemplate 在網站專案中建立新的 ProjectItem
公用方法 EnsureServerRunning 必要時,啟動 ASP.NET 程式開發伺服器 (Development Server),然後傳回網站的 URL。
公用方法 GetUniqueFilename 使用指定的根目錄名稱和副檔名,傳回在指定之資料夾內唯一的檔案名稱。
公用方法 PreCompileWeb 編譯網站並將編譯的輸出寫入指定的資料夾。
公用方法 Refresh 針對在 Visual Studio 以外對網站所做的變更,重新整理帳戶的顯示。
公用方法 WaitUntilReady 封鎖所有方法呼叫,直到背景處理序 (Process) 執行完成為止。

回頁首

備註

您可以使用 VSWebSite 介面,從巨集或 Visual Studio 的增益集 (Add-In) 管理網站專案。

除了這個類別 (Class) 中的屬性和方法之外,使用 WebSiteProperties 類別時,還有更多網站專案的屬性可用。

注意事項注意事項

從 Visual Studio 2005 開始,這個類別所提供的功能均可在 Visual Studio 的版本中使用。無法在 Visual Web Developer Express 版中使用。

範例

下列範例將說明如何使用增益集與 Visual Studio 網站專案進行互動。當組件 (Assembly) 的參考或 Web 服務的 Web 參考加入至專案時,此增益集會使用事件處理常式來寫入事件記錄檔。此外,關閉方案時,它會將每個網站專案的摘要寫入文字檔。

若要執行這個範例,請使用 HOW TO:建立增益集 來建立增益集專案,然後將產生之 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

其他資源

Automation 與擴充性參考

參考 Automation 組件和 DTE2 物件

Visual Studio Macros

建立增益集和精靈