我想知道为什么任何人(包括我自己)都难以为web.config文件中的每个键创建疯狂冗长乏味的xdt转换,只需在配置声明旁边添加“Replace”语句即可。
让我用一个例子来解释:
您是一名开发人员,其任务是为大型Web应用程序创建一系列web.config转换。
您将获得每个环境的web.configs并告知:
以下是web.config示例:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appSettings>
<add key="db.schema" value="app" />
<add key="versionNumber" value="" />
<add key="culture" value="en-US" />
<add key="url" value="" />
<add key="cache.Duration" value="0" />
</appSettings>
</configuration>
以下是基本web.config的示例转换:
<?xml version="1.0" encoding="UTF-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<appSettings>
<add key="versionNumber"
value="01.67.00"
xdt:Transform="Replace" xdt:Locator="Match(key)"/>
<add key="url"
value="http://thisIsNotAnActualURL.com"
xdt:Transform="Replace" xdt:Locator="Match(key)" />
</appSettings>
根据需要,输出以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appSettings>
<add key="db.schema" value="app" />
<add key="versionNumber" value="01.67.00" />
<add key="culture" value="en-US" />
<add key="url" value="http://thisIsNotAnActualURL.com" />
<add key="cache.Duration" value="0" />
</appSettings>
</configuration>
这一切都很公平但是如果你是一个基于大量web.config创建变换的开发人员,那么与上述方法相比,执行以下操作并不容易:
Base web.config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
</configuration>
变换:
<?xml version="1.0" encoding="UTF-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform" xdt:Transform="Replace">
<appSettings>
<add key="db.schema" value="app" />
<add key="versionNumber" value="01.67.00" />
<add key="culture" value="en-US" />
<add key="url" value="http://thisIsNotAnActualURL.com" />
<add key="cache.Duration" value="0" />
</appSettings>
结果与上一个示例相同,所涉及的工作少得多:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appSettings>
<add key="db.schema" value="app" />
<add key="versionNumber" value="01.67.00" />
<add key="culture" value="en-US" />
<add key="url" value="http://thisIsNotAnActualURL.com" />
<add key="cache.Duration" value="0" />
</appSettings>
</configuration>
据我所知,通过使用这种方法,当需要在每个环境中进行更改时,需要在每次转换中反映更改;但除此之外,我看不出任何缺点。
请告诉我,我在这里遗漏了一些明显的东西,因为我发现转换花了我8个多小时才能在几秒钟内完成代码,没有明显的缺点
答案 0 :(得分:0)
猜想是我在这里得到的建议的基础,我们确实决定使用“更短”的转换方法,因为官方方法存在以下问题: