2016-08-01 4 views
0

У меня есть преобразование Web.config, которое серьезно нарушает правила. Моя web.config выглядит следующим образом:Преобразование Web.config удаляет первую настройку, несмотря на то, что локатор имен

<configuration> 
    <configSections> </configSections> 
    <appSettings> </appSettings> 
    <connectionStrings> </connectionStrings> 
    <system.web> </system.web> 
    <runtime> </runtime> 
    <system.webServer> </system.webServer> 
    <entityFramework> </entityFramework> 
    <elmah> </elmah> 
    <applicationSettings> 
    <MySite.Properties.Settings> 
     <setting name="CommandTimeout" serializeAs="String"> 
     <value>180</value> 
     </setting> 
     <setting name="LoginServerUrl" serializeAs="String"> 
     <value>mydevsite.com</value> 
     </setting> 
    </MySite.Properties.Settings> 
    </applicationSettings> 
</configuration> 

Когда я думаю, что я должен быть в состоянии получить его:

<MySite.Properties.Settings> 
    <setting name="LoginServerUrl" serializeAs="String" xdt:Transform="Replace" xdt:Locator="Match(name)"> 
    <value>myqasite.com</value> 
    </setting> 
</MySite.Properties.Settings> 

Но когда я делаю это, он заменяет первая настройка (тайм-аут команды) и оставляет вторую там, так что у меня есть 2 параметра loginserverurl и нет тайм-аута команды!

Единственный способ, которым я могу получить его, чтобы превратить mydevsite.com в myqasite.com заключается в создании преобразования, который делает это:

<?xml version="1.0" encoding="utf-8"?> 

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <system.web> 
    <compilation xdt:Transform="RemoveAttributes(debug)" /> 
    <customErrors mode="Off" xdt:Transform="Replace"> 
     <error statusCode="404" redirect="~/Error/Error404"/> 
    </customErrors> 
    </system.web> 
    <applicationSettings> 
    <MySite.Properties.Settings> 
     <setting name="LoginServerUrl" xdt:Transform="Remove" xdt:Locator="Match(name)"/> 
     <setting name="CommandTimeout" xdt:Transform="Insert" serializeAs="String"> 
     <value>180</value> 
     </setting> 
     <setting name="LoginServerUrl" serializeAs="String" xdt:Transform="Replace" xdt:Locator="Match(name)"> 
     <value>myqasite.com</value> 
     </setting> 
    </MySite.Properties.Settings> 
    </applicationSettings> 
</configuration> 

Могу ли я сделать что-то здесь не так?

ответ

0

Использование конфигурации (в файле App.config), следующий (в файле App.Debug.config) работал отлично для меня:

Единственное, что я должен был добавить был <applicationSettings> тег, чтобы обернуть <MySite.Properties.Settings>

<?xml version="1.0"?> 
<!-- For more information on using app.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 --> 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <applicationSettings> 
    <MySite.Properties.Settings> 
     <setting name="LoginServerUrl" serializeAs="String" xdt:Transform="Replace" xdt:Locator="Match(name)"> 
     <value>myqasite.com</value> 
     </setting> 
    </MySite.Properties.Settings> 
    </applicationSettings> 
</configuration> 

Я использую "Configuration Transformation" VS Extension для создания вложенных файлов для меня:

project file structure

+0

Как вы проверяли, сработало ли это? Через преобразование предварительного просмотра на 'App.Debug.config'? –

+0

@CBauer Я просмотрел выводный файл конфигурации в папке 'bin \ Debug' после сборки – Paddy