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)MSBuildMicrosoftVisualStudiov10.0Web
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