我想在 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 这很好。但显然我的包内的包 list 表明该包是 contentPath 而由 msbuild 生成的包在使用 iisApp 提供程序的包内的 archive.xml 中具有更复杂的 list 。
看了下面的帖子
http://blogs.msdn.com/b/webdev/archive/2013/01/09/real-scenario-folder-deployment-scenarios-with-msdeploy.aspx
我相信如果我使用 -source:manifest="Package.xml"和正确的 Package.xml 最终结果应该类似于 VS 包输出
我想也许 *.SourceManifest.xml 是包的 list 。我使用并构建了包但是当我想将它部署到 using .deploy.cmd 它提示 setAclUser
Error: A value for the 'setAclUser' setting must be specified when the 'setAcl' provider is used with a physical path.
有人知道这是 msbuild 使用的 list 吗?
最佳答案
直接回答你的问题:manifest 是基于 MsDeploySourceManifest
动态生成的MSBuild 项目。
您可以使用 contentPath
而不是 iisApp
通过声明 DeployAsIisApp=false
在您的发布配置文件(或命令行 /p:DeployAsIisApp=false
)中。这也将禁用 setAcl
提供者。
如果您想保留iisApp
,您可以禁用 ACL 提供程序...
IncludeSetAclProviderOnDestination=false
添加到包中在您的发布配置文件中 /I:False
部署至 deploy.cmd
关于manifest - list Visual Studio 使用什么来生成 msdeploy 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18359343/