gpt4 book ai didi

msbuild - 创建部署包后修改文件

转载 作者:行者123 更新时间:2023-12-02 02:03:44 30 4
gpt4 key购买 nike

我正在通过服务器上的自动构建触发器创建 Web 部署包。该包应该处理任何所需服务器上的一切(包括创建特定网站、应用程序池和最新代码)。

我从已配置的本地 IIS 站点手动提取了部署包,其中包含 MsDeploy 创建站点、应用程序池等所需的所有信息...它们存在于以下文件中

archive.xml
parameters.xml
systeminfo.xml

现在的想法是,我将在构建服务器上自动创建一个部署包,其中包含新编译的代码,但在 .zip 包中包含上述 xml 文件。

现在,我正在构建应用程序,然后执行一个 PowerShell 脚本,该脚本将使用我拥有的文件手动覆盖 .zip 中的文件。

但是,我知道您可以扩展目标文件(在项目中使用 .wpp.targets 文件)以插入管道并一路修改内容。不幸的是,我对找到的信息有点迷失了。

我愿意:

1) 配置部署包的创建以使用我现有的 .xml 文件。

2) 如果不可能,请在创建包后用我自己的文件覆盖这些文件。

我的目标是在构建完成后获得完整的可执行部署包,因此我不再需要 PowerShell 脚本。

任何能让我更接近解决方案或帮助我更清楚地理解 msbuild 目标和/或 webdeploy 的信息都非常感谢。

最佳答案

我通过扩展 Package MsBuild 目标成功做到了这一点。

在 Web 项目的根目录中添加包含以下内容的 .wpp.targets 文件。

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\MSBuild.ExtensionPack.4.0\MSBuild.ExtensionPack.tasks"/>

<PropertyGroup>
<DeployFilesDirectory>$(MSBuildProjectDirectory)\Deploy\</DeployFilesDirectory>
</PropertyGroup>

<PropertyGroup>
<OnAfterPackageUsingManifest>
$(OnAfterPackageUsingManifest);
CopyDeployFiles;
ReplaceSetParametersFile;
<!--ZipDeploymentFiles;-->
</OnAfterPackageUsingManifest>
</PropertyGroup>

<Target Name="CopyDeployFiles">
<Message Text="Copy Deploy Files"></Message>

<ItemGroup>
<Files Include="$(DeployFilesDirectory)*.xml" Exclude="$(DeployFilesDirectory)setParameters.xml"></Files>
</ItemGroup>

<MSBuild.ExtensionPack.Compression.Zip TaskAction="AddFiles"
CompressFiles="@(Files)"
ZipFileName="$(PackageFileName)"
RemoveRoot="$(DeployFilesDirectory)"/>
</Target>

<Target Name="ReplaceSetParametersFile" DependsOnTargets="GenerateSampleDeployScript">
<Message Text="Replace Default SetParameters File"></Message>
<Copy DestinationFiles="$(GenerateSampleParametersValueLocationDefault)"
SourceFiles="$(DeployFilesDirectory)setParameters.xml"></Copy>
</Target>

</Project>

第一个目标在 MsDeploy 创建包后执行,并将替换 .zip 文件中的 .xml 文件。我正在使用MsBuild.ExtensionPack邮政编码支持。

第二个目标在构建创建示例 .cmd 和 setParameters 文件后执行,并将用我自己的文件覆盖 setParameters.xml。

理解MsBuild目标等概念需要一段时间,但是一旦你理解了它确实会变得非常强大。

创建包现在就像启动 MsBuild 一样简单

msbuild "D:\Projects\MyWebProject.csproj" /T:Package /P:Configuration=Release;Platform="AnyCPU";PackageLocation="D:\DeployPackage\package.zip";PublishProfile=MyProfile

部署和以前一样

package.deploy.cmd /Y –setParamFile :myParameterFile.xml

关于msbuild - 创建部署包后修改文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17108893/

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