7

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

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

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

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

4

2 回答 2

3

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

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'" 进行调试。

于 2016-08-01T11:35:16.000 回答
1

您可以使用一个环境变量。它是 $(计算机名)。

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

于 2016-02-25T16:03:25.063 回答