更新:请参阅下面的微软官方回复。我想有一个非官方的黑客来完成这个,所以我要离开这个问题了。
更新2:投票my WebDeploy feature request to Microsoft on this issue。
我在我的商店大量使用MSDeploy,并花了数小时尝试定义一个msdeploy参数,该参数将在部署时修改部署提供程序的“其他提供程序设置”。在网上搜索并在Web部署二进制文件上使用Reflector时,我对此表示空洞。
具体来说,我正在尝试允许命令行选项来操作dbDacFx提供程序的DacDeployOptions的“DropObjectsNotInSource”和“BlockWhenDriftDetected”设置。
我已经尝试过每一个我能想到的XPath表达式来修改manifest.xml文件中的DACFx选项:
<sitemanifest>
<dbDacFx path="C:\Database.dacpac"
DropObjectsNotInSource="False"
BlockOnPossibleDataLoss="True" />
</sitemanifest>
使用类型setParam
的msdeploy DeploymentObjectAttribute
始终无法在//@DropObjectsNotInSource
上找到任何匹配的节点。
我怀疑它失败了,因为DropObjectsNotInSource
的值实际上存储在包的archive.xml文件中的提供者节点的属性“MSDeploy.MSDeployProviderOptions”中。 (此属性值似乎是Microsoft.Web.Deployment.DeploymentProviderOptions的.Net序列化实例,因此使用普通的旧XPath操作它将非常困难。)
是否可以在部署时修改这些其他提供商设置?
更新:我通过他们的博客向Microsoft Web Deploy团队发送了一封电子邮件,并在此处发布。 Web Deploy团队在回复我的过程中非常棒(感谢Harsh和Ranjith!)。不幸的是,官方的说法是不支持。
来自:Ranjith Mukkai Ramachandra ... @ microsoft.com
主题:RE:MSDeploy setParam可以修改“其他提供商设置”吗?
日期:2013年2月15日美国东部时间下午5:20:46
收件人:Web部署支持
嗨,史蒂夫,
抱歉,目前不支持此功能。
谢谢, 兰芝斯