7

I am using Web.config transforms to successfully create debug and release versions of the my web.config - this is working correctly.

I am interested to know whether there is a 'machine name' property to specify the current machine name which I can use in a debug URL, rather than hard-coding a specific machine name (using localhost isn't an option in the case), e.g.

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

Are there any properties available using Web.config transforms? Similar to MSBuild's $(ComputerName) property?

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

使用できる環境変数があります。$(COMPUTERNAME)です。

コマンド ウィンドウを開き、「set」(二重引用符なし) と入力して、Enter キーを押します。この環境変数は、画面上部のどこかに表示されます。

于 2016-02-25T16:03:25.063 に答える