gpt4 book ai didi

asp.net - 如何在 Web 和图像服务器之间拆分 Web 应用程序的部署

转载 作者:行者123 更新时间:2023-12-04 15:11:39 24 4
gpt4 key购买 nike

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

如何使用 Web Deploy 或什至 Visual Studio 2010 及更高版本的“发布”功能执行此操作?

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

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

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

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

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

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

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

    最佳答案

    这应该像创建两个不同的发布配置文件一样简单,“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在您的命令行中。

    关于asp.net - 如何在 Web 和图像服务器之间拆分 Web 应用程序的部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21055744/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com