2011-08-11 22 views
5

Tôi đang cố tạo tệp chuyển đổi web.config sẽ thay đổi danh sách giá trị appSettings thành "false" nếu tên có chứa từ "Config".Sự cố với Sử dụng xdt: định vị theo điều kiện "bắt đầu bằng" hoặc "chứa" trong Chuyển đổi Web.config

<add name="Config.Showlog" value ="true" /> 

Các tập tin chuyển đổi có

<appSettings> 
    <add xdt:Transform="SetAttributes(value)" 
     value="false" 
     xdt:Locator="Condition(starts-with(@name,'Config')"/> 
</appSettings> 

Visual Studio 2010 cho thấy một lỗi:

Condition Requires exactly 1 arguments.

Tôi cũng đã cố gắng rằng với XPath như một thuộc tính cho xdt: định vị và nhận được cùng một lỗi. Có vẻ như vấn đề xuất phát từ cách VS 2010 phân tích cú pháp biểu thức bên trong Condition() hoặc Xpath().

Bạn có thể giải quyết vấn đề này bằng cách nào?

Trả lời

4

tôi đã đưa ra các giải pháp sau đây:

<?xml version="1.0"?> 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <appSettings> 
    <add xdt:Transform="SetAttributes(value)" 
     value="false" 
     xdt:Locator="Condition(contains(@key, 'Config'))"/> 
    </appSettings> 
</configuration> 

này sẽ đặt tất cả các thuộc tính của value<appSettings><add> yếu tố có chứa 'Config' trong key thuộc tính để 'false'.

<add key="SomeOtherAppSettings" 
    value="OriginalValue" /> 
<add key="An entry containing Config in the key attribute" 
    value="false" /> 
1

Vấn đề này là một lỗi trong Microsoft.Web.Publishing.Tasks.Dll cài đặt với Visual Studio 2010.

Microsoft đã khắc phục vấn đề với Visual Studio 2012 RTM (See feedback).

Đối với những người vẫn còn trên Visual Studio 2010, thay thế Microsoft.Web.Publishing.Tasks.Dll trong $(MSBuildToolsPath)\MSBuild\Microsoft\VisualStudio\v10.0\Web với tệp được cập nhật trong $(MSBuildToolsPath)\MSBuild\Microsoft\VisualStudio\v11.0\Web sẽ giải quyết vấn đề và cho phép xây dựng thành công.

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