Msbuild 在Web.Config转换中指定计算机名

Msbuild 在Web.Config转换中指定计算机名,msbuild,web-config,web-config-transform,Msbuild,Web Config,Web Config Transform,我正在使用Web.config转换成功地创建我的Web.config的调试和发布版本-这工作正常 我想知道是否有一个“machine name”属性来指定我可以在调试URL中使用的当前机器名,而不是硬编码特定的机器名(在这种情况下,使用localhost不是一个选项),例如 使用Web.config转换是否有可用的属性?与MSBuild的$(ComputerName)属性类似,您可以使用一个环境变量。它是$(计算机名) 打开命令窗口,键入“set”(不带双引号)并按Enter键。您将在屏幕顶

我正在使用Web.config转换成功地创建我的Web.config的调试和发布版本-这工作正常

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



使用Web.config转换是否有可用的属性?与MSBuild的
$(ComputerName)
属性类似,您可以使用一个环境变量。它是$(计算机名)


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

我遇到了一个类似的问题,我最后做的是:

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


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>

这样做的好处是基于机器名运行不同的转换,而无需创建单独的构建配置。您只能通过指定条件=“$(配置)”==“调试”将其配置为调试

<Target Name="AfterBuild">
     <TransformXml Source="Web.config" Condition="Exists('Web.$(Computername).config') " Transform="Web.$(Computername).config" Destination="Web.config" />
</Target>
<?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>