Windows Web部署(MSDeploy)3.6替换规则重命名文件

Windows Web部署(MSDeploy)3.6替换规则重命名文件,windows,replace,command-line,msdeploy,webdeploy,Windows,Replace,Command Line,Msdeploy,Webdeploy,我在命令行上使用msdeploy来部署windows服务,使用sync动词来对抗dirPath源和目标提供程序。到目前为止还不错 我的项目的构建资产具有每个环境的配置文件,在部署到特定环境期间,我希望使用替换规则将目标环境的配置文件重命名为默认配置文件名,但无论我如何设计替换规则,似乎都无法得到我想要的结果。我尝试了许多不同的规则配置,但似乎最符合逻辑的是: -replace:objectName=filePath,scopeAttributeName=path,scopeAttributeVa

我在命令行上使用msdeploy来部署windows服务,使用
sync
动词来对抗
dirPath
源和目标提供程序。到目前为止还不错

我的项目的构建资产具有每个环境的配置文件,在部署到特定环境期间,我希望使用替换规则将目标环境的配置文件重命名为默认配置文件名,但无论我如何设计替换规则,似乎都无法得到我想要的结果。我尝试了许多不同的规则配置,但似乎最符合逻辑的是:

-replace:objectName=filePath,scopeAttributeName=path,scopeAttributeValue=Service\.Dev\.exe\.config,match=Service\.Dev\.exe\.config,replace=Service.exe.config
如果我在没有替换规则的情况下进行部署,
Service.Dev.exe.config
Service.exe.config
都将使用预期的相应内容进行部署。一旦我添加了上面的替换规则,我就得到了
Service.exe.config
,它从源代码中得到了该文件的内容,而不是我所希望的
Service.Dev.exe.config
。如果我交换
匹配
替换
组件的规格(并相应地更改regexp纯文本),以达到:

-replace:objectName=filePath,scopeAttributeName=path,scopeAttributeValue=Service\.Dev\.exe\.config,match=Service\.exe\.config,replace=Service.Dev.exe.config
我只得到了
Service.Dev.exe.config
,其内容为
Service.exe.config
,目标中没有
Service.exe.config


我确信我遗漏了一些显而易见的东西,但这是什么?

这并不能直接回答你的问题,但我认为这是解决你根本问题的更好办法

这里真正的问题是针对不同环境的配置管理。许多开发人员像您一样为每个环境创建不同的配置。这种方法需要在不同的配置文件之间进行大量复制,这些文件很容易失去同步

我发现跨不同环境管理配置的最佳方法是WebDeploy参数化。它类似于配置转换,因为您只有一个经过调整的基本配置文件,所以复制要少得多。但是,参数化是首选的,因为它在部署时而不是构建时应用更改。我们将其用于50多个应用程序,取得了巨大成功


下面是一篇博客文章,其中有更多详细信息-

匹配和替换应该互换


match=Service.Dev.exe.config,replace=Service\.exe\.config

如果您仔细阅读我的文章,您会注意到我尝试了这两种组合中的元素。如果我误解了你的意思,那么如果你能澄清,也许我会理解得更好。