【问题标题】:How can I explicitly specify the Web.config XML Transformation in a Web Deploy pubxml file?如何在 Web Deploy pubxml 文件中明确指定 Web.config XML 转换?
【发布时间】:2016-06-07 10:03:52
【问题描述】:

Visual Studio 中的 Web 部署和 *.pubxml 文件有一个简洁的功能,它允许在部署时应用 web.config XML 转换,而不仅仅是构建时,它支持按部署(即按环境)web.config自定义。

问题是,转换“通过魔法”发生 - 如果您的网站根目录中有一个名为 web.{profile name}.config 的文件,那么它将在发布期间应用 - 但您无法禁用此功能,或者(至于我可以告诉)指定不同的转换文件。我也看不到如何使用 pubxml 文件转换其他 web.config 文件(例如 MVC 项目中的 Views/web.config 文件)。

我确实注意到 pubxml 文件本身就是 MSBuild XML 文件 - 很明显,部署过程只是执行具有正确目标的那些 MSBuild 文件的问题 - 所以为了获得我想要的功能,我只是需要使用我自己的自定义构建步骤修改pubxml 文件。

...但是我应该如何添加这些构建步骤?目标的扩展点和事件是什么?

【问题讨论】:

  • 我自己没有这样做,但是您应该能够创建一个包并从中排除 web.config 文件。然后您可以自己运行转换(slow cheetah 或其他),并指定您希望在 msdeploy 部署时将转换后的文件与包一起部署。这将在调用生成的 cmd 或手动调用 msdeploy 中完成。无论哪种方式,它最终都会被放入对 msdeploy 的调用中。我自己还没有这样做,但理论上应该可以,因为您可以显式传递其他文件进行部署

标签: web-config web-deployment msdeploy web.config-transform


【解决方案1】:

Pubxml 配置仍然在构建时进行,它只是假设您也将同时部署,并允许您相应地调整配置。

如果您想要真正的部署时配置更改,您应该使用 WebDeploy 参数化。它功能更强大,在部署 WebDeploy 包时应用。

我们使用它在 4 个不同的环境(DEV、QA、MOCK、PROD)中部署了 50 多种产品,并取得了巨大成功。

http://www.dotnetcatch.com/2014/09/08/parameterizationpreview-visual-studio-extension/

【讨论】:

  • 据我所知,Web Deploy 参数化不允许 XDT 允许的转换级别,这就是为什么您可以在 MSBuild 中运行两者。
  • 我们将 50 多个应用程序从配置转换转换为参数化,发现参数化功能更强大。
猜你喜欢
  • 2013-05-08
  • 1970-01-01
  • 1970-01-01
  • 2013-08-17
  • 1970-01-01
  • 2018-07-08
  • 2014-06-15
  • 1970-01-01
  • 2013-08-13
相关资源
最近更新 更多