https://msdn.microsoft.com/zh-cn/library/ee942158(v=vs.110).aspx#can_i_exclude_specific_files_or_folders_from_deployment
https://www.asp.net/web-forms/overview/deployment/web-deployment-in-the-enterprise/building-and-packaging-web-application-projects
|
要查看英語原文,請勾選“英語”復選框。也可將鼠標指針移到文本上,在彈出窗口中顯示英語原文。
|
翻譯
英語
|
用於 Visual Studio 和 ASP.NET 的 Web 應用程序項目部署常見問題
通過使用以下產品,本主題回答有關如何的常見問題部署 Web 應用程序項目:
-
Visual Studio 2012
-
Visual Studio Express 2012 for Web
-
與 的Visual Studio 2010 Visual Studio Web發布更新
-
與 的Visual Web Developer 2010 Express Visual Studio Web發布更新
許多答案將指導您通過編輯發布配置文件(.pubxml)文件或wpp.targets文件更改部署設置。 有關如何執行此操作的信息,請參見如何:在 Visual Studio Web 項目中編輯發布配置文件 (.pubxml) 和 .wpp.targets 文件中的部署設置。
本主題包含以下各節:
可通過選中“打包/發布 Web”選項卡上的“僅限運行此應用程序所需的文件”或“此項目中的所有文件”選項來限制部署的文件。 如果您選擇“此項目中的所有文件”選項,則可通過右擊“解決方案資源管理器”中的某個文件並選擇“從項目中排除”來阻止部署該文件。 有關的更多信息文件被排除,當您使用 僅限運行此應用程序所需的文件 或 此項目中的所有文件 選項時,請參見 原因"我的項目文件夾訪問的文件部署的所有?。
如果這些選項對您來說不夠靈活,請編輯該.pubxml或.wpp.targets文件並添加 ExcludeFilesFromDeployment 元素或ExcludeFoldersFromDeployment 元素(或兩者)在 PropertyGroup 元素。 在每個元素,可指定一個名稱,也可以指定分號分隔的多個名稱(;),如以下示例所示:
<PropertyGroup">
<ExcludeFilesFromDeployment>
File1.aspx;File2.aspx
</ExcludeFilesFromDeployment>
<ExcludeFoldersFromDeployment>
Folder1;Folder2
</ExcludeFoldersFromDeployment>
</PropertyGroup>
有關更多信息,請參見中Sayed Hashimi的博客上的以下文章:
從 項目 菜單中選擇 打包/發布設置 打開 項目屬性 窗口的 打包/發布 Web 選項。 在標記 要部署的項(適用於所有部署方法) 提供了三個選項卡的部分下拉列表:
-
僅限運行此應用程序所需的文件。 這是默認值。 Visual Studio嘗試確定哪些文件對於應用程序平穩運行所必需的。 例如,則在編譯期間生成的轉換 內容標記的bin文件夾、文件和文件包括程序集。 若要查看文件是否已標記為 內容,選擇。解決方案資源管理器的文件,然后檢查在屬性 窗口的文件的 生成操作 屬性。 可以更改 生成操作 值。內容 使這些文件部署,或將其更改為其他例如,無,防止文件部署。 自動設置為內容 的某些文件類型包括.master,.svc,.ashx,.asax,.skin,.browser,.config,windowsforms站點地圖。 在項目必須包含文件為了使生成操作 屬性。
-
此項目中的所有文件。 無論其 生成操作 屬性值,Visual Studio部署在項目中包含的所有文件。
-
在項目文件夾中的所有文件。 Visual Studio部署在項目文件夾和子文件夾,的所有無論文件包括在項目中或其 生成操作 屬性值。
如果您熟悉MSBuild語法,可以找到有關這三個選項如何的詳細信息。以下文件工作:
-
Microsoft.Web.Publishing.OnlyFilesToRunTheApp.targets
-
Microsoft.Web.Publishing.AllFilesInTheProject.targets
-
Microsoft.Web.Publishing.AllFilesInProjectFolder.targets
這些文件可在安裝Visual Studio的計算機的以下位置找到:
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\
Web比Visual Studio Web.config轉換部署參數是復雜設置,但非常靈活。 Web部署參數是復雜的設置,因為它們可以自動執行許多其他部署任務,如更新數據庫腳本和IIS設置。 Web部署參數為Web.config轉換非常有用,在創建部署包時,因此,在創建包時不知道需要輸入部署的Web.config文件中的值。 Web部署參數可以為參數指定值,在安裝包,沒有,則在創建。 這尤其有用在企業環境中,通常可供其他人員可以負責創建並安裝部署包。 例如,包的開發人員可能不知道需要Web.config文件中的某些密碼。 安裝包的IT管理員可以輸入這些值,在安裝包。 有關更多信息,請 參數化與. Web.config轉換 參見Vishal Joshi博客和 如何在 Web 部署包中使用 Web 部署參數。
在實現entity framework代碼的第一個上下文選件類訪問數據庫時,發布 Web 向導的 設置 可顯示允許您使用第一個代碼遷移自動化該數據庫的部署的復選框。 但是,如果使用第一個代碼API,只訪問數據庫和代碼不先使用創建數據庫,您不能使用遷移部署它。 在此方案中,您希望了解允許您部署SQL Server數據庫的 更新數據庫 復選框您不會將第一個代碼上下文。
部署代碼第一個數據庫,而無需使用遷移
-
在Visual Studio,因此,如果您打開 發布 Web 的向導,請關閉它。
-
在應用程序Web.config文件,請創建數據庫中的其他連接字符串元素。 提供此新連接字符串元素不匹配上下文類名或完全限定類名的名稱。
-
生成項目,然后打開 發布 Web 向導並選擇要使用的配置文件。
-
選擇“設置”選項卡。
已經在選項卡上 數據庫 部分的數據庫現在會看到兩項,一個代碼的第一個上下文選件類和一個在Web.config文件的新連接字符串的。
-
在第一個代碼上下文選件類中的項,請輸入連接字符串所需應用程序在運行時使用,並清除 將第一個代碼遷移 復選框。
-
在部署期間,新的Web.config文件連接字符串中的項,請輸入應使用進行架構更改的連接字符串並選擇 更新數據庫。
有關如何輸入數據庫部署設置的更多信息,請參見 如何:使用 Visual Studio 中的一鍵式發布來部署 Web 應用程序項目。
打包和發布詳細級別由確定 MSBuild 詳細級別的同一 Visual Studio 設置控制。 從主菜單中,選擇“工具”,再選擇“選項”。 在“選項”對話框中展開“項目和解決方案”,然后選擇“生成並運行”。 隨后將顯示“MSBuild 項目生成輸出詳細信息”下拉列表,您可以從該列表中選擇下列選項之一:
-
安靜
-
最低
-
Normal
-
詳細
-
診斷
這些選項與當您從命令行運行 MSBuild 時,可通過使用 /verbosity 或 /v 標志設置的內容相對應。 有關MSBuild命令行標志的更多信息,請參見MSBuild 命令行參考。
您可以創建兩個發布配置文件,一個發布該項目和一個創建備份包。 然后,在發布項目必須切換到重新創建包並單擊 發布 的發布配置文件之后。 有關如何創建一個包的發布的信息的分析,請參見 如何:在 Visual Studio 中創建 Web 部署包。
是。 編輯項目文件並在相應的 PropertyGroup 元素中添加 DeployOnBuild 元素。 有關如何編輯項目文件的信息,(,請 如何:編輯在項目文件的部署設置參見。)下面的示例演示針對“Release”生成配置的 PropertyGroup 元素:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <DeployOnBuild>True</DeployOnBuild> <!-- Additional settings --> </PropertyGroup>
如果將在項目文件中此更改,請確保更新的 PropertyGroup 元素在 Import 語句之前位於項目文件。 (必須在 Microsoft.Web.Publishing.targets的Import 之前設置 DeployOnBuild 屬性。)
還必須將 DeployDefaultTarget 元素設置為 Package。 但此操作是可選的,因為該值是默認值。
這是必須執行使該包創建自動的所有,當您從命令行的解決方案。 若要使自動創建包還使用,則在生成從Visual Studio的解決方案時,將以下代碼添加到項目文件在 Microsoft.CSharp.targets 或 Microsoft.VisualBasic.targets的 Import 后面:
<PropertyGroup>
<BuildDependsOn>
$(BuildDependsOn);
Package
</BuildDependsOn>
</PropertyGroup>
可以在 IIS 7 及更高版本中做到這一點。 有關委托部署權限的信息,請參見以下主題:
-
Microsoft TechNet 網站上的委派站點和應用程序管理 (IIS 7)。
-
IIS.NET 網站上的 Delegating Administration(委派管理)。
-
Configuring the Web Deployment Handler(配置 Web 部署處理程序)。
如果需要執行多個復制命令部署應用程序,並且在它們之間的大量時間間隔,應用程序域重新啟動可能在復制命令之間。 若要阻止重新啟動,添加一個 httpRuntime 元素(ASP.NET 設置架構) 元素添加到Web.config文件並將 waitChangeNotification 屬性設置為要等待程序域不重新啟動在復制命令之間。 例如,如果您希望指定五秒的等待時間,httpRuntime 元素可能類似於以下示例。
<configuration>
<system.web>
<compilation debug="false" targetFramework="4.0" />
<httpRuntime
waitChangeNotification="5" />
</system.web>
</configuration>
如果您希望確保應用程序域在第一個復制命令執行后的特定時間間隔內重新啟動,請向 httpRuntime 元素添加一個 maxWaitChangeNotification特性,並將它設置為要等待的最大秒數。 例如,包含具有兩個特性的 httpRuntime 元素的 Web.config 文件可能類似於以下示例。
<configuration>
<system.web>
<httpRuntime
waitChangeNotification="5"
maxWaitChangeNotification="10" />
</system.web>
</configuration>
若要部署 ASP.NET 4 Web 應用程序,必須在目標服務器上向 IIS 注冊 ASP.NET 4。 此外,必須將要部署到 IIS 網站的應用程序池分配給 .NET Framework 4。 如果未滿足上述任一條件,則當您嘗試部署時可能會看到下列錯誤之一:
-
默認 .NET 4.0 應用程序池不存在,或者無法添加應用程序。 請驗證此計算機上是否安裝了 ASP.NET 4.0。
-
您嘗試使用的應用程序池已將“managedRuntimeVersion”屬性設置為“v2.0”。 此應用程序需要“v4.0”。
在安裝 Visual Studio 時將安裝 ASP.NET 4。 但是,安裝過程不會自動將 ASP.NET 4 注冊到 IIS,並且不會自動將現有 IIS 網站分配給 .NET 4 應用程序池。 若要糾正此錯誤,請將 ASP.NET 注冊到 IIS,並將目標 IIS 網站的應用程序池設置為包所需的 .NET Framework 版本。 有關如何注冊 IIS 的信息,請參見 ASP.NET IIS Registration Tool (Aspnet_regiis.exe)。
通常,當您部署到生產服務器時在firewall中部署。 如果收到關於大文件的關閉流錯誤,請在firewall的設置。 如果這是部署失敗的原因,您可能會看到錯誤消息例如在源計算機上的以下示例:
Warning: Retrying the sync because a socket error (10054) occurred.
Retrying operation 'Serialization' on object MSDeploy.contentPath (sourcePath).
在目標服務器上,您可能會看到錯誤消息如下面的示例:
System.Net.HttpListenerException: An operation was attempted on a nonexistent network connection
