7

我使用新的VS 2010配置转换来部署网站。要更换我的applicationSettings我用下面的配置转型中的单一设置:VS 2010配置转换在部署过程中产生不需要的空白空间

<setting name="TempPath" serializeAs="String" xdt:Transform="Replace" xdt:Locator="Match(name)"> 
    <value>C:\TEMP</value> 
</setting> 

注:没有为C之间没有空格:\ TEMP和结束标记

这种转变导致的设置与这样的不需要的空白空间:

<setting name="TempPath" serializeAs="String"> 
    <value>C:\TEMP 
    </value> 
</setting> 

如果我使用此设置没有修剪它,我得到错误的行为。

有什么想法?

回答

6

这是VS 2010的known problem据微软称这将是固定的服务包和未来发布。

更新

的SP1的最终版本解决了这个问题。删除不需要的换行符的解决方法不再是必需的。

+0

服务包测试版即使它应该可以解决我的问题。 – toxaq 2011-01-15 10:14:36

0

Xml格式使空间。 作为XML标记的内容不关心换行符和空格。 如果你想有字符串值,我会强烈建议,而不是InnerValue付诸属性,

<setting name="TempPath" value="C:\TEMP"> 
</setting> 
+0

这是标准ApplicationSettings的一个片段。我看不到在这里改变属性的机会。 – 2010-07-21 14:29:43

3

我只是想提一下,在john.rummell的MS connect问题页面上发布了一个解决方法,它对我来说工作完美无瑕。只需将其添加到您的项目中即可:

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; } 
    } 
} 
+0

我很晚就认出了你的答案。这种解决方法也适用于我。 VB.NET提示:类名是MySettings。 – 2010-11-30 09:04:18

+0

您需要确保部分类是与原始设置类相同的名称空间的一部分。通常这意味着将.Properties添加到部分类的名称空间声明中。 – TGnat 2011-02-01 19:54:10