7

Ich verwende die neuen VS 2010-Konfigurationstransformationen zur Bereitstellung von Websites. So ersetzen Sie eine einzelne Einstellung meiner Application Ich verwende die folgende Konfiguration Transformation: \ TEMP und der End-TagDie VS 2010-Konfigurationstransformation erzeugt während der Bereitstellung unerwünschten Leerraum.

Diese Transformation führt zu einer Einstellung:

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

Bemerkung: zwischen C Es gibt keinen Leerraum ist mit unerwünschtem Leerraum wie folgt:

Wenn ich diese Einstellung benutze, ohne sie zu trimmen, bekomme ich ein fehlerhaftes Verhalten.

Irgendeine Idee?

Antwort

6

Dies ist ein known problem von VS 2010. Laut Microsoft es für das Service Pack behoben werden und weiter zum nächsten Freisetzung.

aktualisieren

Die finale Version des SP1 löst dieses Problem. Problemumgehungen zum Entfernen unerwünschter Zeilenvorschübe sind nicht mehr erforderlich.

+0

Das Service Pack Beta hat mein Problem nicht gelöst, obwohl es sollte. – toxaq

0

Die Xml-Formatierung macht den Platz. wie der Inhalt eines XML-Tags Zeilenumbrüche und Leerzeichen nicht kümmern. wenn Sie String-Werte haben wollen, würde ich stark es in Attribute empfehlen statt InnerValue zu setzen,

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

Es ist ein Ausschnitt aus den Standard-ApplicationSettings. Ich sehe keine Chance, hier zu Attributen zu wechseln. –

3

Ich wollte nur erwähnen, dass es eine Problemumgehung gibt, die auf der MS connect Problemseite von john.rummell gepostet wurde, die für mich einwandfrei funktionierte. Fügen Sie das einfach zu Ihrem Projekt hinzu:

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

Spät erkannte ich deine Antwort. Diese Problemumgehung funktioniert auch für mich. Ein Hinweis für VB.NET: Der Klassenname ist MySettings. –

+0

Sie müssen sicherstellen, dass die partielle Klasse Teil des gleichen Namespace wie die ursprüngliche Einstellungsklasse ist. Normalerweise bedeutet dies das Hinzufügen von .Properties zur Namespace-Deklaration für die partielle Klasse. – TGnat

Verwandte Themen