gpt4 book ai didi

deployment - MSBuild 项目部署到本地文件夹并转换配置

转载 作者:行者123 更新时间:2023-12-02 20:23:54 25 4
gpt4 key购买 nike

我在尝试找到使用 MSBuild 构建 Web 项目并输出仅包含可部署文件(即没有 .cs、.csproj、.Debug.config 等)的项目的正确方法时遇到困难,但发布到一个本地文件夹,然后我可以通过 FTP、RoboCopy(或其他方式)将其传输到辅助位置。

发布的输出必须根据指定的配置预先转换 Web.config 文件,并且转换配置文件(例如 Web.Debug.config)包含在输出中。我不需要任何花哨的发布到 IIS、数据库部署或类似的东西,我只想要干净的文件系统输出,然后我可以测试它。请注意,这无法使用可视化工具来完成,因为我想将其作为自动构建过程的一部分来运行。

我可以生成一个Web部署包,但我无法让WebDeploy工作,因为它似乎不再处理引用的命令行选项(似乎是某种错误)并且目录结构有空格,所以我希望使用 MSBuild 完成整个任务,因为 MSBuild 似乎具有转换配置文件 (TransformXml) 的 native 能力,这是我使用的唯一真正的正确部署功能.

最佳答案

终于明白了。下面的构建脚本可以解决这个问题:

<?xml version="1.0"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll"/>
<PropertyGroup>
<OutputDir>obj\website-output</OutputDir>
</PropertyGroup>
<Target Name="PrepareDeploy">
<ItemGroup>
<DeployableFiles Include="App_Code/**/*.*;App_Data/**/*.*;Areas/**/Views/**/*.*;bin/**/*.*;Views/**/*.*;*.aspx;*.asax;*.html;*.htm;sitemap.xml;*.ico;*.png" Exclude="App_Data/**/*.log" />
</ItemGroup>
<RemoveDir ContinueOnError="true" Directories="$(OutputDir)" />
<MSBuild Projects="Website.csproj" />
<MakeDir ContinueOnError="true" Directories="$(OutputDir)" />
<Copy SourceFiles="@(DeployableFiles)" DestinationFiles="@(DeployableFiles->'$(OutputDir)\%(RelativeDir)%(Filename)%(Extension)')" />
<TransformXml Source="Web.config" Transform="Web.$(Configuration).config" Destination="$(OutputDir)\web.config" />
</Target>
</Project>

关于deployment - MSBuild 项目部署到本地文件夹并转换配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9859698/

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