【问题标题】:How to split deployment of web application between web and image servers如何在 Web 和图像服务器之间拆分 Web 应用程序的部署
【发布时间】:2014-01-10 22:36:55
【问题描述】:

我有一个 ASP.NET 3.5 Web 应用程序项目。我想将大部分内容部署到我的 Web 服务器,但我想将 CSS、图像和 JavaScript 部署到第二个“图像服务器”。

如何使用 Web Deploy 甚至 Visual Studio 2010 及更高版本的“发布”功能来做到这一点?


有些人问我尝试了什么。我没有尝试过任何东西,因为我不知道有什么可以尝试的。

我过去在网络部署方面做过一些认真的工作。我什至使用 Web Deploy 来部署非 Web 应用程序,方法是手动将适当的目标添加到项目文件中。我有 MSBUILD 书(“Inside the Microsoft® Build Engine: Using MSBuild and Team Foundation Build”,由 Sayed Ibrahim Hashimi 和 William Bartholomew 撰写)和Supplement,并且知道如何将额外文件添加到项目中没有的 MSDEPLOY 包中,以及添加文件夹,设置访问保护等。

我所做的知道如何从一个项目中制作两个包,然后将这两个包部署到两个单独的服务器上。


我可以尝试以下两件事。在我(是的,专家)看来,两者都不值得花时间。我很乐意有人告诉我哪里错了。

Visual Studio 中的发布配置文件不仅包含有关要发布哪些文件以及发布到哪个目标的信息;它还包括要构建和部署的解决方案配置。我也可以

  1. 有两种解决方案配置:“Release”和“ReleaseImage”。 “Images”项目不会在“Release”配置中构建,“normal”项目不会在“ReleaseImage”配置中构建。 “正常”项目的发布配置文件将构建“发布”配置,图像的发布配置文件将构建“ReleaseImage”配置。我不应该说如果图像、CSS 和 JavaScript 与使用它的代码不在同一个项目中是多么痛苦。
  2. 与第一个类似,但将所有内容都放在一个项目中。这一次,使用两种配置,手动编辑 .csproj 文件以在包含内容的 ItemGroup 元素上放置条件。实际上,单个项目将变成两个项目,具体取决于解决方案配置。我不必说明每次向项目中添加新项目时都必须手动编辑项目文件是多么不切实际。

我想不出任何实用的方法来做我需要做的事情。我希望有人知道我不知道的实用技术——也许是 Web Deploy 3.5 的一些我不知道的功能。

【问题讨论】:

  • 我不同意对这个问题的反对意见。但是有几个人 from the Tavern 吹毛求疵。
  • @Mysticial:感谢您提供的信息。我不聊天,所以我不会知道这件事。我原以为他们会在这里讨论。
  • @Aristos:是的,我想我假设读者要么对 MSDEPLOY 有所了解,要么认识到他们一无所知并避免投反对票!没有什么可以尝试的。没有内置的项目去多个服务器的概念。没有仅发布网站的一部分的内置概念。实际上没有什么可以尝试的。事实证实了这一点,甚至没有人提出诸如“哦,所以我猜你不知道某某”之类的讽刺概念。
  • @Aristos:对不起,我的意思是“讽刺评论”,而不是“讽刺概念”
  • 这没有直接关系,但可能对blogs.msdn.com/b/webdev/archive/2013/01/09/…有帮助。

标签: asp.net visual-studio-2010 deployment msdeploy webdeploy


【解决方案1】:

这应该像创建两个不同的发布配置文件“PackageApplication”和“PackageContent”一样简单,它们都是“Web Deploy Package”配置文件。

那么只需为您不想要的东西定义ExcludeFromPackageFiles 项目。

PackageApplication.pubxml 看起来像这样:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>Package</WebPublishMethod>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish />
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <DesktopBuildPackageLocation>package\Application.zip</DesktopBuildPackageLocation>
    <PackageAsSingleFile>true</PackageAsSingleFile>
    <DeployIisAppPath />
    <PublishDatabaseSettings>
      <Objects xmlns="" />
    </PublishDatabaseSettings>
  </PropertyGroup>

  <ItemGroup>
    <ExcludeFromPackageFiles Include="**/*.js" />
    <ExcludeFromPackageFiles Include="**/*.css" />
  </ItemGroup>
</Project>

PackageContent.pubxml 看起来像:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>Package</WebPublishMethod>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish />
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <DesktopBuildPackageLocation>package\Content.zip</DesktopBuildPackageLocation>
    <PackageAsSingleFile>true</PackageAsSingleFile>
    <DeployIisAppPath />
    <PublishDatabaseSettings>
      <Objects xmlns="" />
    </PublishDatabaseSettings>
  </PropertyGroup>

  <ItemGroup>
    <ExcludeFromPackageFiles Include="**/*.dll;**/*.pdb" />
    <ExcludeFromPackageFiles Include="**/*.cshtml" />
    <ExcludeFromPackageFiles Include="**/*.aspx;**/*.asax" />
    <ExcludeFromPackageFiles Include="**/*.config" />
  </ItemGroup>
</Project>

您现在将拥有一个 Application.zip 和一个 Content.zip(包含 .deploy.cmd 脚​​本),您可以将它们部署到您的两个 Web 服务器。

警告我不完全确定 MSBuild 脚本是否足够聪明,可以在配置文件之间切换时清除临时输出目录 (out\Debug\Package\PackageTmp),所以我会建议在命令行中包含/t:Clean;Build

【讨论】:

  • 谢谢。这是我需要的东西。出于某种原因,我从没想过编辑发布配置文件。我忘了它们是 MSBUILD 格式的。
  • 我让它在 VS2010 中工作。需要注意的是,它需要Visual Studio Web Publish Update。顺便说一句,也可以使用&lt;ExcludeFromPackageFolders Include="CSS" /&gt;
猜你喜欢
  • 2017-12-19
  • 1970-01-01
  • 1970-01-01
  • 2016-04-10
  • 2012-09-23
  • 2020-09-17
  • 2012-09-10
  • 2019-01-03
  • 2019-12-19
相关资源
最近更新 更多