在Web.Config Transform中指定Machine Name

时间:2013-08-12 15:00:36

标签: msbuild web-config web-config-transform

我正在使用Web.config转换来成功创建我的web.config的调试和发布版本 - 这是正常的。

我很想知道是否有一个'machine name'属性来指定我可以在调试URL中使用的当前机器名,而不是硬编码特定的机器名(使用localhost不是一个选项)案例),例如

<add name="XrmService" connectionString="http://$(ComputerName):5555/Service.svc" />

使用Web.config转换是否有可用的属性?与MSBuild的$(ComputerName)属性类似?

2 个答案:

答案 0 :(得分:2)

我遇到了类似的问题,我最终做的是:

1)将以下构建目标添加到项目文件中。 (这是一个有效的MSBuild脚本)

<Target Name="AfterBuild">
     <TransformXml Source="Web.config" Condition="Exists('Web.$(Computername).config') " Transform="Web.$(Computername).config" Destination="Web.config" />
</Target>

2)在项目中添加了Web.MyMachineName.config配置转换文件。在你的情况下,它应该是这样的:

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<connectionStrings>
        <add name="XrmService"
             connectionString="http://MyMachineName:5555/Service.svc"
             xdt:Transform="SetAttributes"
             xdt:Locator="Match(name)"/>
    </connectionStrings>
</configuration>

这样做的好处是可以根据计算机名运行不同的转换,而无需创建单独的构建配置。您可以通过指定Condition =“'$(Configuration)'=='Debug'”将其配置为仅调试。

答案 1 :(得分:0)

您可以使用环境变量。它是$(COMPUTERNAME)。

打开命令窗口,输入“set”(不带双引号),然后按Enter键。您将在屏幕顶部的某处看到此环境变量。