7

是否可以在 web.config 转换文件中包含变量?对于每个环境,我都有基本相同的转换,只是具有不同的值。例如,对于开发环境,我会...

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
    <appSettings>
        <add key="serverName" value="server1" xdt:Transform="Replace" xdt:Locator="Match(key)" />
        <add key="serverPath" value="\\server1" xdt:Transform="Replace" xdt:Locator="Match(key)" />
    </appSettings>
</configuration>

对于 QA 环境,我会...

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
    <appSettings>
        <add key="serverName" value="server2" xdt:Transform="Replace" xdt:Locator="Match(key)" />
        <add key="serverPath" value="\\server2" xdt:Transform="Replace" xdt:Locator="Match(key)" />
    </appSettings>
</configuration>

唯一的区别是 server1 与 server2 的值。这是一个简单的示例,实际上,我在转换中多次使用服务器值。有没有办法在转换文件中声明一个变量以多次使用?就像是...

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
    <property name="server" value="server2" />
    <appSettings>
        <add key="serverName" value="${server}" xdt:Transform="Replace" xdt:Locator="Match(key)" />
        <add key="serverPath" value="\\${server}" xdt:Transform="Replace" xdt:Locator="Match(key)" />
    </appSettings>
</configuration>
4

2 回答 2

4

web.config 转换不支持此功能。您可以查看的一件事是创建可用于生成 web.config 转换的T4 模板。所以想法是将变量放在 T4 模板中,它会吐出 web.debug.config/web.release.config/etc。然后,当您打包/发布时,它只会拾取作为 T4 输出生成的转换文件。

如果你能提供一些有用的具体例子,我不介意帮助你做这样的事情。

于 2011-03-09T02:28:45.457 回答
0

几个月前我做了类似的事情。示例位于http://www.geoffhudik.com/tech/2010/10/19/webconfig-automation-with-t4-and-a-macro.html

于 2011-03-10T05:21:24.683 回答