views:

130

answers:

3

I use the new VS 2010 configuration transformations to deploy websites. To replace a single setting of my ApplicationSettings I use the following configuration transformation:

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

Remark: There is no white space between C:\TEMP and the end tag

This transformation results in a setting with unwanted white space like this:

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

If I use this setting without trimming it, I get faulty behaviour.

Any idea?

A: 

The Xml formatting makes the space. as the content of an XML tags do not care about line breaks and whitespaces. if you want to have string values, i would strongly recommend to put it into attributes, instead of InnerValue

<setting name="TempPath" value="C:\TEMP">
</setting>
cRichter
It's a snippet out of the standard ApplicationSettings. I see no chance to change to attributes here.
Dirk
+2  A: 

This is a known problem of VS 2010. According to Microsoft it will be fixed for the service pack and next release.

Dirk
A: 

I just wanted to mention that there is a workaround posted on the MS connect issue page by john.rummell which worked flawlessly for me. Just add this to your project:

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; }
    }
}
BigJoe714