[英]Using MsBuild to generate customized MsDeploy manifest (Package target)
[英]What manifest visual studio is using to generate msdeploy package
我想在CI过程结束时将带有msdeploy.exe的文件夹打包到zip目标。 我运行以下命令行
msdeploy.exe -verb:sync -source:contentpath="C:\SampleWebApp" -dest:package="c:\SampleWebApp.zip" -declareParamFile="parameters.xml"
我也喜欢msbuild在吐出部署包时生成的* .deploy.cmd和* .SetParameters.xml。 我重命名了一组* .deploy.cmd和* .SetParameters.xml文件并相应地更改了内容。 能够在部署环境中运行。
当我运行* .deploy.cmd文件时,它会生成文件夹“C:\\ SampleWebApp”,而不是根据.SetParameter.xml中提供的参数创建iis应用程序。
经过一番调查,我发现.cmd部署到-dest:auto这很好。 但显然我的包清单显示在包中指示此包是contentPath,而msbuild生成的包在使用iisApp提供程序的包内的archive.xml中有更复杂的清单。
看了下面的帖子
我相信如果我使用-source:manifest =“Package.xml”和正确的Package.xml,最终结果应该类似于VS包输出
我想也许* .SourceManifest.xml是包的清单。 我使用它并构建包但当我想将它部署到使用.deploy.cmd时它会抱怨setAclUser
错误:当'setAcl'提供程序与物理路径一起使用时,必须指定'setAclUser'设置的值。
有人知道这是msbuild使用的清单吗?
直接回答您的问题:清单是基于MsDeploySourceManifest
MSBuild项动态生成的。
您可以通过在发布配置文件中声明DeployAsIisApp=false
(或命令行/p:DeployAsIisApp=false
)来使用contentPath
而不是iisApp
。 这也将禁用setAcl
提供程序。
如果要保留iisApp
,可以禁用ACL提供程序...
IncludeSetAclProviderOnDestination=false
将其添加到包中 /I:False
部署/I:False
部署deploy.cmd
以下是清单模板
<?xml version="1.0" encoding="utf-8"?>
<sitemanifest>
<iisApp path="[PATH1]"/>
</sitemanifest>
和Parameter.xml模板
<parameters>
<parameter name="IIS Web Application Name" defaultValue="WEBSITENAME" tags="IisApp">
<parameterEntry kind="ProviderPath" scope="IisApp" match="^[PATH1ESCAPED]$" />
</parameter>
<!-- appSetting section-->
</parameters>
注意:[PATH1]应替换为您的文件夹路径,如C:\\ MY.FOLDER \\ WWW和[PATH1ESCAPED]应该是相同的路径,但使用后缀和前缀^ $转义,如^ C:\\ MY.FOLDER \\ WWW $
然后你可以打电话
"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:manifest="Manifest.xml" -dest:package=%1 -declareParamFile="parameters.xml"
和%1是文件夹路径,如C:\\ MY.FOLDER \\ WWW
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.