2010-06-02 11 views

risposta

3

Ho trovato una risposta. Sembra che questo sia un bug noto nel motore di trasformazione XDT in Visual Studio/Team Build. Questo bug è stato segnalato a marzo, quindi non ho idea di quando verrà risolto.

Here's the link

Edit: Questo link in realtà non è correlato alla domanda iniziale. Alla fine abbiamo capito che non era possibile con le trasformazioni di configurazione web integrate. Quindi abbiamo finito per scrivere un'applicazione console per rimuovere i commenti e formattare correttamente il file trasformato.

+0

Questo bug non sembra avere nulla a che fare con la rimozione dei commenti. –

+0

Esiste la possibilità di estendere le trasformazioni come descritto in http://sedodream.com/2010/09/09/ExtendingXMLWebconfigConfigTransformation.aspx. Forse, potrebbe essere usato anche per rimuovere commenti. –

2

Ecco la mia funzione. È possibile aggiungere a una classe di supporto:

public static string RemoveComments(
     string xmlString, 
     int indention, 
     bool preserveWhiteSpace) 
    { 
     XmlDocument xDoc = new XmlDocument(); 
     xDoc.PreserveWhitespace = preserveWhiteSpace; 
     xDoc.LoadXml(xmlString); 
     XmlNodeList list = xDoc.SelectNodes("//comment()"); 

     foreach (XmlNode node in list) 
     { 
      node.ParentNode.RemoveChild(node); 
     } 

     string xml; 
     using (StringWriter sw = new StringWriter()) 
     { 
      using (XmlTextWriter xtw = new XmlTextWriter(sw)) 
      { 
       if (indention > 0) 
       { 
        xtw.IndentChar = ' '; 
        xtw.Indentation = indention; 
        xtw.Formatting = System.Xml.Formatting.Indented; 
       } 

       xDoc.WriteContentTo(xtw); 
       xtw.Close(); 
       sw.Close(); 
      } 
      xml = sw.ToString(); 
     } 

     return xml; 
    } 
1

Se si dispone di piccole sezioni che si desidera rimuovere i commenti da voi potrebbe essere disposto a utilizzare a Sostituire trasformazione.

base di file web.config:

<system.webServer> 
    <rewrite> 
     <rules> 
      <clear /> 
      <!-- See transforming configs to see values inserted for builds --> 
     </rules> 
    </rewrite> 

web.release.config transfrom (che sostituiscono i contenuti senza commenti):

<system.webServer> 
<rewrite > 
    <rules xdt:Transform="Replace"> 
    <clear/> 
    <rule name="Redirect to https" stopProcessing="true" > 
     <match url="(.*)" /> 
     <conditions> 
     <add input="{HTTPS}" pattern="off" ignoreCase="true" /> 
     </conditions> 
     <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" /> 
    </rule> 
    </rules> 
</rewrite> 

risultato in config pubblicato finale:

<system.webServer> 
<rewrite> 
    <rules> 
    <clear /> 
    <rule name="Redirect to https" stopProcessing="true"> 
     <match url="(.*)" /> 
     <conditions> 
     <add input="{HTTPS}" pattern="off" ignoreCase="true" /> 
     </conditions> 
     <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" /> 
    </rule> 
    </rules> 
</rewrite> 

Potresti finire a copiare MOLTO della tua configurazione dalla base al file di trasformazione usando questo approccio, ma potrebbe essere un pò appropriato in casi di piccole dimensioni ...

Nel mio caso non desidero riscrivere le regole nella mia base, ma ho inserito un commento per dire ad altri sviluppatori di cercare le trasformazioni per maggiori informazioni, ma non voglio quel commento nel finale versione.

Problemi correlati