我正在尝试创建一个web.config转换文件,如果名称中包含单词“Config”,它会将appSettings值列表更改为“false”。
<add name="Config.Showlog" value ="true" />
转换文件有
<appSettings>
<add xdt:Transform="SetAttributes(value)"
value="false"
xdt:Locator="Condition(starts-with(@name,'Config')"/>
</appSettings>
Visual Studio 2010显示错误:
条件正好需要1个参数。
我还尝试使用Xpath作为xdt:
定位器的属性并得到了相同的错误。似乎问题来自VS 2010如何解析Condition()
或Xpath()
中的表达式。
你如何解决这个问题?
答案 0 :(得分:4)
我提出了以下解决方案:
<?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>
这会将value
属性中包含'Config'的<appSettings><add>
元素的所有key
属性设置为'false'。
<add key="SomeOtherAppSettings"
value="OriginalValue" />
<add key="An entry containing Config in the key attribute"
value="false" />
答案 1 :(得分:1)
此问题是Visual Studio 2010中安装的Microsoft.Web.Publishing.Tasks.Dll
中的错误。
Microsoft已使用Visual Studio 2012 RTM更正了此问题 (See feedback)。
对于仍在Visual Studio 2010上的用户,将Microsoft.Web.Publishing.Tasks.Dll
中的$(MSBuildToolsPath)\MSBuild\Microsoft\VisualStudio\v10.0\Web
替换为$(MSBuildToolsPath)\MSBuild\Microsoft\VisualStudio\v11.0\Web
中的更新文件将解决问题并允许成功构建。
答案 2 :(得分:-1)
这是Visual Studio 2010的一个错误.Microsoft已在Visual Studio 2012中修复它