2015-07-03 15 views
8

Tôi có các biến đổi web.config cho một số môi trường. Trong tệp cấu hình, tôi có một phần applicationSettings với một vài cặp giá trị và thiết lập.chuyển đổi web.config cho <applicationSettings>

Tôi đã thử dựa trên cú pháp tôi sử dụng để khớp tên và thay đổi chuỗi kết nối cũng khớp với cài đặt và thay đổi giá trị nhưng các biến đổi không thành công. Đây có phải là ở tất cả có thể?

Vì vậy web.config của tôi có:

<applicationSettings> 
    <AppName.My.MySettings> 
     <setting name="setting1" serializeAs="String"> 
      <value>Initial Value</value> 
     </setting> 
    </AppName.My.MySettings> 
</applicationSettings> 

tôi chuyển đổi file có

<applicationSettings> 
    <add name="setting1" value="Changed Value" xdt:Transform="SetAttributes" xdt:Location="Match(name)"/> 
</applicationSettings> 

tôi nhận được không có lỗi khi tôi xem trước các thay đổi nhưng trong khi các thiết lập chuỗi kết nối được chuyển giá trị cho setting1 không phải là. Bất kỳ trợ giúp nào được đánh giá cao.

CẬP NHẬT

<applicationSettings> 
    <add name="setting1" value="Changed Value" xdt:Transform="Replace" xdt:Location="Match(name)"/> 
</applicationSettings> 

Thật không may cùng một vấn đề ... Không có lỗi và không biến đổi.

SOLUTION Tôi đã quên đề cập đến tôi có câu trả lời nhiều hơn một khung cảnh rất rõ rệt là giải pháp phần ... Đây là cách tôi đã làm nó ... Web.Config ...

<applicationSettings> 
    <AppName.My.MySettings> 
     <setting name="setting1" serializeAs="String"> 
      <value>Initial Value 1</value> 
     </setting> 
     <setting name="setting2" serializeAs="String"> 
      <value>Initial Value 2</value> 
     </setting> 
     <setting name="setting3" serializeAs="String"> 
      <value>Initial Value 3</value> 
     </setting> 
    </AppName.My.MySettings> 
</applicationSettings> 

Biến Tệp

<applicationSettings xdt:Transform="Replace"> 
    <AppName.My.MySettings> 
     <setting name="setting1" serializeAs="String"> 
      <value>CHANGED VALUE 1</value> 
     </setting> 
     <setting name="setting2" serializeAs="String"> 
      <value>Initial value 2</value> 
     </setting> 
     <setting name="setting3" serializeAs="String"> 
      <value>CHANGED VALUE 3</value> 
     </setting> 
    </AppName.My.MySettings> 
</applicationSettings> 

Lưu ý Tôi phải bao gồm tất cả các cài đặt và giá trị lồng nhau ngay cả khi một số trong số chúng không thay đổi như trường hợp đặt 2 trong ví dụ của tôi.

+0

giá trị là một nút không phải là thuộc tính và bạn phải sử dụng Transform = "Replace" – Thorarins

+0

@Andreas ... vui lòng xem cập nhật của tôi .. vẫn không có niềm vui. – Mych

Trả lời

-2

tập tin ban đầu:

<applicationSettings> 
    <AppName.My.MySettings> 
     <setting name="setting1" serializeAs="String"> 
      <value>Initial Value</value> 
     </setting> 
    </AppName.My.MySettings> 
</applicationSettings> 

Chuyển đổi file:

<applicationSettings> 
    <AppName.My.MySettings> 
     <setting name="setting1" serializeAs="String"> 
      <value xdt:Transform="Replace">Changed Value</value> 
     </setting> 
    </AppName.My.MySettings> 
    </applicationSettings> 
+1

Andreas, biến đổi trên riêng của nó đã không làm việc tôi đã phải sử dụng xdt: Transform = "Thay thế" (trường hợp nhạy cảm). Bây giờ tôi có một vấn đề khác. Tôi có nhiều hơn một thiết lập (12 để được chính xác). Bản xem trước biến đổi cho thấy rằng biến đổi đã được thực hiện nhưng tất cả so với cài đặt đầu tiên ở cuối thiết lập biến đổi1 có giá trị được chuyển đổi của thiết lập12 trong khi tất cả các thiết lập 2 khác để thiết lập12 vẫn không thay đổi. Bất cứ ý tưởng nào ... Tôi nghĩ tôi cần một địa điểm. – Mych

+0

phải xem xml để giúp bạn – Thorarins

+1

Sắp xếp .... Thay vì đặt xdt: Transform = "Replace" trong giá trị param tôi đặt nó với gốc của applicationSettings và làm việc ... cho bạn tín dụng như bạn chỉ tôi đi đúng hướng ... cập nhật câu hỏi với giải pháp đúng. – Mych

0

Chuyển đổi file:

<applicationSettings> 
    <AppName.My.MySettings> 
     <setting xdt:Transform="Replace" xdt:Locator="Match(name)" name="setting1" serializeAs="String"> 
      <value>Changed Value</value> 
     </setting> 
    </AppName.My.MySettings> 
    </applicationSettings> 

16

Tôi biết đây là một chút muộn, nhưng sau chuyển đổi tập tin sẽ cho phép bạn chuyển đổi chỉ một thiết lập khi bạn có nhiều.

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <applicationSettings> 
    <YourProject.Settings> 
     <setting name="Log4NetPath" serializeAs="String" xdt:Transform="Replace" xdt:Locator="Match(name)"> 
     <value xdt:Transform="Replace">NewPath</value> 
     </setting> 
    </YourProject.Settings> 
    </applicationSettings> 
</configuration> 
Các vấn đề liên quan