Web 部署 - 如何创建包含选定项目的包
Web Deploy - How to create a package with selected items
我想尝试 'Web Deploy' 方法来部署我们的网站。在提出问题之前,我想提供一些有关当前部署过程的详细信息:
它是一个企业站点,托管在多台服务器上(持续部署)。
文件不是'Release'模式,而是'Debug'模式
我们只手动复制粘贴当前作业相关的文件。话说这周要部署Accounts模块,那么要部署的文件有
/mysite/App_Code/Models/accounts.cs
/mysite/pages/accounts.aspx,accounts.aspx.cs
这3个文件将被手动复制到所有服务器中的相应文件夹中。多年来,这一直是这里的程序。
- 项目 'mysite' 是 'ASP.NET Website' 而不是 'ASP.NET Web Application'(在 VS2013 中),这意味着这些选项不可用 - Package/Publish Web & Package/Publish SQL
我已经在开发系统中创建了包,
(i) 在 Visual Studio 和
中使用发布选项(网络部署包)
(ii) IIS 中的导出应用程序(提供 select 文件的选项)
- 是否可以只为我需要的文件创建一个包(在这种情况下accounts.cs、accounts.aspx、accounts.aspx.cs), 使用 VS 发布功能。
- 是否可以在包中包含自定义 SQL 脚本文件。 (使用 IIS 或 VS)
- 如果 Q2 的答案是肯定的,那么它应该只执行一次,而不是对所有服务器执行一次。因为只有一台DB服务器。怎么办。
我还没有去安装包部分。
1 - 不通过 VS 因为没有扩展点(据我所知)到 MSBuild for Websites。 Sayed a great post 描述了网站与应用程序的处理方式有何不同。
备选方案 - 您可以将要部署的文件复制到一个新文件夹,然后使用 MSDeploy.exe 命令行工具创建一个客户 MSDeploy 程序包,您可以部署到您的服务器。
D:\temp>"C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:contentPath=%cd%\DefaultWebSite\website1 -dest:package=DefaultWebSite.zip
Info: Updating MSDeploy.contentPath (MSDeploy.contentPath).
Info: Adding virtual path (D:\temp\DefaultWebSite\website1)
Info: Adding directory (D:\temp\DefaultWebSite\website1).
Total changes: 3 (2 added, 0 deleted, 1 updated, 0 parameters changed, 0 bytes c
opied)
D:\temp>"C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:package=DefaultWebSite.zip -dest:contentPath="Default Web Site\website2"
Info: Adding MSDeploy.contentPath (MSDeploy.contentPath).
Info: Adding virtual path (Default Web Site\website2)
Info: Adding directory (Default Web Site\website2).
Info: Adding file (Default Web Site\website2\Default.aspx).
Info: Adding file (Default Web Site\website2\Default.aspx.cs).
Info: Adding file (Default Web Site\website2\Web.config).
Total changes: 6 (6 added, 0 deleted, 0 updated, 0 parameters changed, 971 bytes
copied)
2/3 - 是的,您可以将 SQL 包含到 Web 部署包中 ,但每次部署包时都会部署它。我们发现最好将 SQL 部署分离到它自己的包中,这样我们就可以仅在需要时部署它。
此 post 描述了我们如何处理 SQL 部署 - https://dotnetcatch.com/2016/02/10/deploying-a-database-project-with-msdeploy/
我想尝试 'Web Deploy' 方法来部署我们的网站。在提出问题之前,我想提供一些有关当前部署过程的详细信息:
它是一个企业站点,托管在多台服务器上(持续部署)。
文件不是'Release'模式,而是'Debug'模式
我们只手动复制粘贴当前作业相关的文件。话说这周要部署Accounts模块,那么要部署的文件有
/mysite/App_Code/Models/accounts.cs
/mysite/pages/accounts.aspx,accounts.aspx.cs这3个文件将被手动复制到所有服务器中的相应文件夹中。多年来,这一直是这里的程序。
- 项目 'mysite' 是 'ASP.NET Website' 而不是 'ASP.NET Web Application'(在 VS2013 中),这意味着这些选项不可用 - Package/Publish Web & Package/Publish SQL
我已经在开发系统中创建了包,
(i) 在 Visual Studio 和
中使用发布选项(网络部署包)
(ii) IIS 中的导出应用程序(提供 select 文件的选项)
- 是否可以只为我需要的文件创建一个包(在这种情况下accounts.cs、accounts.aspx、accounts.aspx.cs), 使用 VS 发布功能。
- 是否可以在包中包含自定义 SQL 脚本文件。 (使用 IIS 或 VS)
- 如果 Q2 的答案是肯定的,那么它应该只执行一次,而不是对所有服务器执行一次。因为只有一台DB服务器。怎么办。
我还没有去安装包部分。
1 - 不通过 VS 因为没有扩展点(据我所知)到 MSBuild for Websites。 Sayed a great post 描述了网站与应用程序的处理方式有何不同。
备选方案 - 您可以将要部署的文件复制到一个新文件夹,然后使用 MSDeploy.exe 命令行工具创建一个客户 MSDeploy 程序包,您可以部署到您的服务器。
D:\temp>"C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:contentPath=%cd%\DefaultWebSite\website1 -dest:package=DefaultWebSite.zip
Info: Updating MSDeploy.contentPath (MSDeploy.contentPath).
Info: Adding virtual path (D:\temp\DefaultWebSite\website1)
Info: Adding directory (D:\temp\DefaultWebSite\website1).
Total changes: 3 (2 added, 0 deleted, 1 updated, 0 parameters changed, 0 bytes c
opied)
D:\temp>"C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:package=DefaultWebSite.zip -dest:contentPath="Default Web Site\website2"
Info: Adding MSDeploy.contentPath (MSDeploy.contentPath).
Info: Adding virtual path (Default Web Site\website2)
Info: Adding directory (Default Web Site\website2).
Info: Adding file (Default Web Site\website2\Default.aspx).
Info: Adding file (Default Web Site\website2\Default.aspx.cs).
Info: Adding file (Default Web Site\website2\Web.config).
Total changes: 6 (6 added, 0 deleted, 0 updated, 0 parameters changed, 971 bytes
copied)
2/3 - 是的,您可以将 SQL 包含到 Web 部署包中 ,但每次部署包时都会部署它。我们发现最好将 SQL 部署分离到它自己的包中,这样我们就可以仅在需要时部署它。
此 post 描述了我们如何处理 SQL 部署 - https://dotnetcatch.com/2016/02/10/deploying-a-database-project-with-msdeploy/