共用方式為


逐步解說:使用 Web 部署套件部署 Web 應用程式專案 (第 2 部分,共 4 部分)

這是一系列逐步解說中的第二個,內容說明如何使用部署套件來部署 Web 應用程式專案。 如需這些系列的詳細資訊,請參閱逐步解說:使用 Web 部署套件部署 Web 應用程式專案 (第 1 部分,共 4 部分)

在這個逐步解說中,您會變更 AdventureWorksLT 資料庫並且部署這些變更。 然後,您會變更網頁並且部署這些變更,但不部署資料庫變更。 這個逐步解說將說明下列工作:

  • 重新部署已經部署的資料庫。

  • 從部署中排除已經部署的資料庫。

  • 針對 [偵錯] 組建組態建立套件。

  • 使用 IIS 管理員,在本機電腦上安裝套件。

必要條件

如需必要條件的清單,請參閱逐步解說:使用 Web 部署套件部署 Web 應用程式專案 (第 1 部分,共 4 部分)

針對資料庫變更設定部署

如果您想要將資料庫變更 (結構或資料) 部署至已經部署的 Web 應用程式,而且您不需要保留已經在已部署之資料庫中輸入的資料,就可以使用自動產生的指令碼來重新部署資料庫。 不過,根據預設,自動產生的指令碼不會先卸除資料庫物件,然後在目的電腦上建立 (或重新建立) 這些物件。 因此,您必須指定應該要包含 Drop 陳述式,避免指令碼嘗試建立已經存在的資料庫物件時所產生的錯誤。

在本逐步解說的這個章節中,您會對 AdventureWorksLT 資料庫的結構進行變更。 然後,您會重新部署 Web 應用程式。 您會變更資料庫部署設定,讓針對 AdventureWorksLT 資料庫自動產生的指令碼包含 Drop 陳述式,而且沒有其他資料庫指令碼會在部署期間執行。

在下列程序中,您會在資料庫和 Default.aspx 檔案中,將 Color 欄位的名稱變更為 Appearance。

若要變更資料庫欄位的名稱

  1. 在 [伺服器總管] 中,展開 App_Data 資料夾,然後按兩下 AdventureWorksLT2008_Data.mdf。

    此資料庫就會在 [伺服器總管] 視窗中開啟。

  2. 在 [伺服器總管] 中,展開 Tables 資料夾。

  3. 以滑鼠右鍵按一下 [Product (SalesLT)] 資料表,然後按一下 [開啟資料表定義]。

  4. 將 [Color] 資料行的名稱變更為 Appearance,如下列範例所示:

    資料庫資料表屬性視窗

  5. 儲存資料表,然後關閉 [資料表定義] 視窗。

  6. 開啟 Default.aspx 檔案。

  7. GridView 控制項中,尋找 [Color] 資料行的 BoundField 項目,然後將 DataField、SortExpression 和 HeaderText 屬性的值從 Color 變更為 Appearance,如下列範例所示:

    <asp:BoundField DataField="Appearance" HeaderText="Appearance"
        SortExpression="Appearance" />
    
  8. 儲存並關閉 Default.aspx。

  9. 按下 CTRL-F5 測試這些變更。

    首頁隨即顯示。此時,[Color] 資料行已經重新命名為 [Appearance],如下圖所示:

    包含外觀欄的 Adventure Works 首頁

在下列程序中,您會設定部署,讓它產生 AdventureWorksLT 資料庫的 Drop 陳述式。 您必須修改專案檔才能進行此作業,因為 Visual Studio UI 沒有提供該項設定。

若要指定應該包含 Drop 陳述式

  1. 在 [方案總管] 中,以滑鼠右鍵按一下專案,然後按一下 [在 Windows 檔案總管中開啟資料夾]。

    [Windows 檔案總管] 視窗隨即開啟成專案資料夾。

  2. 使用 [記事本] 等文字編輯器來開啟 AdventureWorks.csproj 或 AdventureWorks.vbproj。

  3. 尋找代表 Debug 組建組態和 AnyCPU 平台的 PropertyGroup 項目。

    這個項目包含您在專案 [屬性] 設定中,於 [封裝/發行 Web] 和 [封裝/發行 SQL] 索引標籤上輸入的設定。

  4. 在 PropertyGroup 項目中,尋找名稱為 AWLTConnectionString-Deployment 的 ObjectGroup 項目。

    這個項目包含 [封裝/發行 SQL] 索引標籤上與 AdventureWorksLT 資料庫相關的設定。

  5. 在 ObjectGroup 項目中,將 ScriptDropsFirst="True" 屬性加入至位於第一個 Object 項目中的 PreSource 項目。

    下列範例顯示包含已變更之 PreSource 項目的 PropertyGroup 項目 (您專案檔中該項目的部分詳細資料可能會與此範例稍有不同)。

    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
      ...
      <PublishDatabaseSettings>
      ...
        <Objects>
          ...
          <ObjectGroup Name="AWLTConnectionString-Web.config" Order="2">
            <Destination Path="..." />
            <Object Type="dbFullSql">
              <PreSource Path="..." ScriptSchema="True" 
                ScriptData="True" CopyAllFullTextCatalogs="False"  
                ScriptDropsFirst="True"/>
              <Source Path="..." Transacted="True" />
            </Object>
            <Object Type="dbFullSql" Enabled="True">
                <Source Path="...AdventureWorksGrant.sql" 
                  Transacted="True" />
            </Object>
          </ObjectGroup>
        </Objects>
      </PublishDatabaseSettings>
    </PropertyGroup>
    
  6. 儲存並關閉 AdventureWorks.csproj 或 AdventureWorks.vbproj 檔案。

  7. 如果您看見 [偵測到檔案修改] 對話方塊 (如下圖所示),請按一下 [重新載入] 按鈕。

    [偵測到檔案修改] 對話方塊

在下列程序中,您會指定資料庫指令碼不應該執行。 這包括針對 ApplicationServices 資料庫自動產生的指令碼以及 AdventureWorksGrant.sql 指令碼。

若要指定其他指令碼不應該在部署期間執行

  1. 在專案 [屬性] 頁面上,按一下 [封裝/發行 SQL] 索引標籤。

  2. 在 [組態] 清單中,確定已選取 [使用中 (偵錯)]。

  3. 在 [資料庫項目] 方格中,確定已選取 [ApplicationServices-Deployment] 資料列。

  4. 在 [資料庫指令碼] 方格中,針對 [指令碼路徑] 資料行具有 [自動產生的結構描述和資料] 的資料列清除 [包含] 核取方塊,如下圖所示:

    已排除指令碼的 [封裝/發行 SQL] 索引標籤

  5. 在 [資料庫項目] 方格中,選取 [AWLTConnectionString-Deployment] 資料列。

  6. 在 [資料庫指令碼] 方格中,針對具有 AdventureWorksGrant.sql 指令碼的資料列清除 [包含] 核取方塊。

  7. 儲存並關閉 [屬性] 頁面。

部署資料庫變更

在下列程序中,您會建立套件,然後使用 IIS 管理員將此套件匯入 IIS 中,藉以部署專案。

若要建立套件並將它匯入 IIS 中

  1. 按一下 [專案] 功能表中的 [建置部署套件]。

    Visual Studio 會建置專案,然後建立部署套件。 系統會針對 AdventureWorksLT 資料庫建立包含 Drop 陳述式的指令碼。 但是不會針對 ApplicationServices 資料庫建立任何指令碼。

  2. 請依照下列步驟,將部署套件的路徑複製到 [Windows 剪貼簿]:

    1. 在 [方案總管] 中,如果您沒有看見 obj 資料夾,請按一下 [顯示所有檔案] 按鈕。

    2. 依序展開 obj 資料夾、Debug 資料夾和 Package 資料夾。

    3. 選取 AdventureWorks.zip 檔案。

    4. 在 [屬性] 視窗中,複製 [完整路徑] 欄位的值。

  3. 在 [Windows 控制台] 中,按一下 [系統管理工具],然後按一下 [Internet Information Services (IIS) 管理員]。

  4. 在 IIS 管理員的 [連線] 面板中,展開電腦的節點、展開 [站台] 資料夾,然後選取 [Default Web Site]。

  5. 在 [動作] 面板中,按一下 [匯入應用程式] 超連結。

  6. 在 [選取封裝] 對話方塊的 [封裝路徑] 方塊中,貼上部署套件路徑。

  7. 按 [下一步]。

  8. 在 [選取封裝的內容] 對話方塊中,按 [下一步]。

  9. 在 [輸入應用程式封裝資訊] 對話方塊中,按 [下一步]。

  10. 在 [覆寫現有檔案] 對話方塊中,按 [下一步]。

    套件安裝完成之後,[安裝進度與摘要] 對話方塊就會顯示只更新了一個資料庫,如下圖所示:

    [安裝進度和摘要] 對話方塊

  11. 開啟瀏覽器並移至下列 URL,藉以測試應用程式:

    http://localhost/AdventureWorks

    Default.aspx 頁面隨即顯示。 它看起來就像是您在 Visual Studio 中執行專案時所呈現的內容。 產品資料表會顯示 [Appearance] 資料行而非 [Color] 資料行。 這表示 AdventureWorksLT 資料庫變更已部署成功。

在未進行資料庫變更的情況下重新部署

資料庫結構的變更頻率通常低於 Web 應用程式的其他部分。 在本逐步解說的這個章節中,您會變更網頁並重新部署 Web 應用程式,但是不會部署資料庫變更。

在下列程序中,您會將 Default.aspx 頁面上 AdventureWorksLT 產品資料表中第一個資料行的標題從 [Name] 變更為 [Product]。

若要對應用程式進行變更

  1. 開啟 Default.aspx 檔案。

  2. 將 [Name] 資料行的 BoundField.HeaderText 屬性變更為 Product,如下列範例所示:

    <asp:BoundField DataField="Name" HeaderText="Product" 
      SortExpression="Name" />
    
  3. 儲存並關閉檔案。

在下列程序中,您會變更資料庫部署設定,以確定 Visual Studio 不會產生任何資料庫指令碼。

若要停用資料庫部署

  1. 在 [方案總管] 中,以滑鼠右鍵按一下專案,然後按一下 [內容]。

  2. 選取 [封裝/發行 Web] 索引標籤。

  3. 清除 [包含 [封裝/發行 SQL] 索引標籤中設定的所有資料庫] 核取方塊。

  4. 儲存並關閉 [屬性] 頁面。

在下列程序中,您會重新部署應用程式並測試變更。

若要重新部署並測試應用程式

  1. 按一下 [專案] 功能表中的 [建置部署套件]。

  2. 將部署套件路徑複製到 [Windows 剪貼簿]。

  3. 執行 [Internet Information Services (IIS) 管理員]。

  4. 在 IIS 管理員中,選取 [Default Web Site]。

  5. 在 [動作] 面板中,按一下 [匯入應用程式] 超連結。

  6. 在 [選取封裝] 對話方塊的 [封裝路徑] 方塊中,貼上部署套件路徑。

  7. 按 [下一步]。

  8. 在 [選取封裝的內容] 對話方塊中,按 [下一步]。

  9. 在 [輸入應用程式封裝資訊] 對話方塊中,按 [下一步]。

  10. 在 [覆寫現有檔案] 對話方塊中,按 [下一步]。

    此時,[安裝進度與摘要] 對話方塊就會顯示沒有更新任何資料庫,而且只更新了一個檔案。

  11. 開啟瀏覽器並移至下列 URL,藉以測試應用程式:

    http://localhost/AdventureWorks

    Default.aspx 頁面看起來仍然像是您在 Visual Studio 中執行頁面時所呈現的內容。 產品資料表之第一個資料行中的標題 [Product] 就表示 Default.aspx 的變更已部署成功。

後續步驟

在本系列的第一個逐步解說中,您已將檔案系統 Web 應用程式專案部署至 IIS Web 應用程式,以便在開發電腦上進行測試。 在這個逐步解說中,您已變更其中一個資料庫的結構、變更網頁,並且部署變更。

本系列的下一個逐步解說是逐步解說:使用 Web 部署套件部署 Web 應用程式專案 (第 3 部分,共 4 部分)。 在該逐步解說中,您會建立可用來部署至開發用環境與實際執行伺服器的部署套件。

請參閱

概念

ASP.NET 部署內容對應