我正在使用XML-Document-Transform转换我的web.config文件以便部署到登台服务器。不幸的是,它并没有完全按照指定进行转换,而是在元素的文本中添加了一些空格。然后,这个空白被我使用的Castle Windsor配置和轰炸应用程序拾取。
以下是一个例子:
的web.config:
<configuration>
<castle>
<properties>
<serverUrl>http://test</serverUrl>
<properties>
<components>
<component id="MyService">
<parameters>
<Url>#{serverUrl}/MyService.asmx</Url>
</parameters>
</component>
</components>
<castle>
<configuration>
web.staging.config:
<configuration>
<castle>
<properties>
<serverUrl xdt:Transform="Replace">http://staging</serverUrl>
<properties>
<castle>
<configuration>
输出web.config:
<configuration>
<castle>
<properties>
<serverUrl>http://staging
</serverUrl>
<properties>
<components>
<component id="MyService">
<parameters>
<Url>#{serverUrl}/MyService.asmx</Url>
</parameters>
</component>
</components>
<castle>
<configuration>
正如您所看到的那样,通过转换已将更多空格插入serverUrl
元素。
不幸的是,在将serverUrl
插入到创建无效网址的服务的Url
时,Castle会包含空格。
其他人遇到过这个?任何人都有一个仍然使用新的Microsoft转换方法的解决方案,但不会导致插入额外的空格?
恕我直言,这是变换过程中的一个错误,虽然Castle也可能忽略了空白。
非常感谢,Rob
答案 0 :(得分:2)
这在Visual Studio 2010 SP1中已得到修复,并且是Microsoft.Web.Publishing.Tasks.dll和相关* .target文件的问题。如果您使用的是未安装Visual Studio SP1但正在使用MsBuild的构建服务器,则应确保复制这些文件。
要解决此问题,请将安装了SP1的计算机上的所有内容从C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web复制到构建服务器上的同一目录。
答案 1 :(得分:1)
此问题也会影响applicationSettings,但我可以按照您的建议修剪空白区域来解决这个问题。这是我的Settings.cs文件。
internal sealed partial class Settings
{
public override object this[string propertyName]
{
get
{
// trim the value if it's a string
string value = base[propertyName] as string;
if (value != null)
{
return value.Trim();
}
return base[propertyName];
}
set { base[propertyName] = value; }
}
}
我担心这对Castle的问题没有帮助,但也许它会帮助别人!