2010-07-15 29 views
19

Chúng tôi đang sử dụng msdeploy (hoặc triển khai web nếu bạn muốn) để đóng gói và triển khai các ứng dụng web. Bằng cách khai báo các tham số thời gian gói chúng ta có thể cung cấp các giá trị tại thời gian triển khai (để thay thế các chuỗi kết nối trong số những thứ khác).Thay thế cấu hình web * elements * bằng thông số msdeploy

Sự cố chúng tôi hiện đang gặp phải đang thay thế các giá trị trong ứng dụngCài đặt phần trong cấu hình web của chúng tôi. Chúng tôi không thể lấy msdeploy để thay thế giá trị vì nội dung chúng tôi muốn thay thế là văn bản bên trong phần tử xml, chứ không phải giá trị thuộc tính (cảnh báo chúng tôi nhận được là: "Không thể đặt giá trị trên loại nút 'Yếu tố'").

Các cấu hình liên quan như sau:

<applicationSettings> 
    <Name.Of.Assembly.Properties.Settings> 
    <setting name="someSetting" serializeAs="String"> 
     <value>I wanna be replaced</value> 
    </setting> 
    </Name.Of.Assembly.Properties.Settings> 
</applicationSettings> 

và tham số khai báo xml trông như thế này:

<parameter name="XX" defaultValue="default"> 
    <parameterEntry kind="XmlFile" 
         scope="Web\.config$" 
         match="/configuration/applicationSettings/Name.Of.Assembly.Properties.Settings/setting[@name='someSetting']/value" /> 
</parameter> 

Liệu msdeploy chỉ hỗ trợ thay thế các giá trị thuộc tính hay tôi làm điều gì sai?

Trả lời

40

Đối với hậu thế ...

Bạn chỉ cần thêm "/ text()" vào cuối trận đấu. Điều đó sẽ thay đổi giá trị của các thẻ kèm theo. Tuy nhiên, giá trị này không được để trống trong web.config nguồn. Vì vậy, khi bạn xây dựng gói triển khai bằng cách sử dụng cấu hình giải pháp "Phát hành", web.Release.config không được đặt giá trị này của cài đặt thành giá trị trống.

<parameter name="XX" defaultValue="default"> 
    <parameterEntry kind="XmlFile" 
         scope="Web\.config$" 
         match="/configuration/applicationSettings/Name.Of.Assembly.Properties.Settings/setting[@name='someSetting']/value/text()" /> 
</parameter> 
+0

Hữu ích, cảm ơn! Sẽ thử. –

+2

Làm việc cho tôi ---/text() là những gì tôi đã mất tích. Không phải là một chuyên gia xpath. Điều này sẽ được đánh dấu là câu trả lời. Cảm ơn Dave. – TravisWhidden

+1

Đồng ý với @TravisWhidden - điều này phải được đánh dấu là câu trả lời đúng. – Philippe

Các vấn đề liên quan