0

我已经看到了一些问题,阅读了所有帖子,但我仍然无法完成这项工作。要么我错过了什么,要么无法完成..

所以我有一个相当简单的(ASP.NET MVC)项目。在我项目的根目录下有一个parameters.xml文件,里面有参数定义,比如:

<?xml version="1.0" encoding="utf-8" ?>
<parameters>
  <parameter 
   name="Realm"
   description="Realm for ADFS authentication"
   defaultValue="http://somewebsite">
   <parameterEntry 
      kind="XmlFile"
      scope="Web.config"
      match="/configuration/appSettings/add[@key='ida:Realm']/@value" />
   <parameterEntry 
      kind="XmlFile" 
      scope="Web.config"
      match="/configuration/system.identityModel/identityConfiguration/audienceUris/add/@value" />
<parameterEntry 
      kind="XmlFile" 
      scope="Web.config"
      match="/configuration/system.identityModel.services/federationConfiguration/wsFederation/@realm" />

到目前为止,一切都很好。这个结构很好理解,一个部署参数的名称(例如“Realm”)一个它的默认值,以及一些可以在 Web.config 文件中找到的 XCLT 选项。

现在,当我创建部署包时,通过运行 Publish,我得到一个目录,其中包含:

  1. 用于部署的自动生成的 cmd 文件
  2. 自述文件
  3. 清单 XML 文件
  4. 一个 zip 文件,其中包含必须部署到我的服务器的所有文件。
  5. .SetParameters.xml 文件

最后一个文件包含我在上面引用的 parameters.xml 文件中设置的参数值,并且这些值被设置为在那里定义的默认值。
例如,如果 Realm 的默认值设置为http://somewebsite,在生成的部署 SetParameters.xml 中,我会得到这条记录:

<setParameter name="Realm" value="http://somewebsite" />

部署包后,这些值将从该 xml 文件中获取,并根据原始 parameter.xml 文件中定义的 XPath 替换我的 Web.Config 中的值。

现在,我想要的是在构建部署包时覆盖此参数(以及许多其他参数),因为我需要为不同的部署配置文件提供不同的值。

关键似乎是我的 .pubxml 文件,它负责发布设置。我尝试了很多选项,包括 Sayed Hashimi在这里所说的,以前在这里这里给出的答案,这里也是(和其他人也是)......对于该死的参数似乎没有任何影响!

我错过了什么吗?有什么神奇的技巧吗?
我应该完全忽略这些参数而只依赖匹配的 web.config 转换吗?还有什么建议吗?也许将自定义目标添加到 .csproj 文件?(甚至尝试过......)

谢谢!阿隆。

4

1 回答 1

2

WebDeploy 参数化发生在部署时而不是构建时(如配置转换)。我们在工作中为 50 多种产品使用参数化并取得了巨大成功。对于每个产品,我们有 4 个 SetParameters 文件:

  • 设置参数.DEV.xml
  • 设置参数.QA.xml
  • 设置参数.UAT.xml
  • 设置参数.PROD.xml

每个都有对其环境有效的参数值。我们使用 PowerShell 脚本和 Thoughtworks GO 使用适当的 SetParameters 文件在管道中执行 MSDeploy 包。

请注意,请确保不要将您的 SetParameters 文件与您的应用程序一起部署 - http://dotnetcatch.com/2016/04/02/webdeploy-parameterization-tip-dont-publish-your-parameterization-files/

此外,如果您想在 VS 中预览参数化,这可能会有所帮助 - http://dotnetcatch.com/2014/09/08/parameterizationpreview-visual-studio-extension/

于 2016-04-08T10:42:49.203 回答