【发布时间】:2016-07-28 14:26:54
【问题描述】:
我已经看到了一些问题,阅读了所有帖子,但我仍然无法完成这项工作。要么我遗漏了什么,要么无法完成..
所以我有一个相当简单的(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”)是它的默认值,以及一些 XCLT 选项,可以在 Web.config 文件中找到。
现在,当我创建部署包时,通过运行 Publish,我得到一个目录,其中包含:
- 为部署自动生成的 cmd 文件
- 自述文件
- 清单 XML 文件
- 一个 zip 文件,其中包含必须部署到我的服务器的所有文件。
- .SetParameters.xml 文件
最后一个文件包含我在上面引用的 parameters.xml 文件中设置的参数值,这些值被设置为在那里定义的默认值。
例如如果Realm的默认值设置为http://somewebsite,在生成的部署SetParameters.xml中,我会得到这条记录:
<setParameter name="Realm" value="http://somewebsite" />
部署包后,这些值将从此 xml 文件中获取,并根据原始 parameter.xml 文件中定义的 XPath 替换我的 Web.Config 中的值。
现在,我想要在构建部署包时覆盖此参数(以及许多其他参数),因为不同的部署配置文件需要不同的值。
关键似乎是我的 .pubxml 文件,它负责发布设置。我尝试了很多选项,包括 Sayed Hashimi 所说的 here、之前给出的答案 here 和 here、here too(以及其他)......对于该死的参数似乎没有任何影响!
我错过了什么吗?有什么神奇的技巧吗?
我应该完全忽略参数而只依赖匹配的 web.config 转换吗?还有什么建议吗?也许将自定义目标添加到 .csproj 文件? (甚至尝试过...)
谢谢! 阿隆。
【问题讨论】:
标签: asp.net deployment msbuild msdeploy web-publishing