Удалите комментарии XML с помощью преобразования веб-конфигурации Visual Studio 2010 - PullRequest
5 голосов
/ 02 июня 2010

Мы используем Team Build для обработки наших развертываний на нашем сервере разработки, и нам необходимо удалять комментарии из нашей веб-конфигурации при ее преобразовании. Кто-нибудь знает, как удалить строки комментария <!-- --> из файла веб-конфигурации с помощью преобразования?

Ответы [ 3 ]

3 голосов
/ 04 июня 2010

Я нашел ответ. Кажется, это известная ошибка в механизме преобразования XDT в Visual Studio / Team Build. Об этой ошибке сообщили в марте, поэтому не знаю, когда это будет исправлено.

Вот ссылка

Редактировать: Эта ссылка на самом деле не связана с оригинальным вопросом. В конце концов мы поняли, что это невозможно с помощью встроенных преобразований веб-конфигурации. Таким образом, мы закончили писать консольное приложение для удаления комментариев и правильного форматирования преобразованного файла.

2 голосов
/ 27 сентября 2011

Вот моя функция.Вы можете добавить его к вспомогательному классу:

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 голос
/ 18 декабря 2016

Если у вас есть небольшие разделы, из которых вы хотите удалить комментарии, возможно, вы захотите использовать замену.

базовый файл web.config:

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

web.release.config transfrom (замена содержимого без комментариев):

<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>

результат в окончательной опубликованной конфигурации:

<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>

Вы могли бы в конечном итоге скопировать МНОГО вашей конфигурации из базы в файл преобразования, используя этот подход, но это может быть целесообразно в небольших случаях ...

В моем случае я не хочу переписывать правила в своей базе, но я добавил комментарий, чтобы другие разработчики искали преобразования, чтобы получить больше информации, но я не хочу, чтобы этот комментарий в окончательной версии.

...