Странное изменение XML при вводе и выводе его в консольном приложении с использованием Visual Studio - PullRequest
0 голосов
/ 18 января 2011

У меня есть простое консольное приложение, созданное в c # с использованием VisualStudio.Он имеет входной параметр и возвращает его на выход.Это код:

    static void Main(string[] args)
    {
        string msg = args[0];            
        Console.WriteLine(msg);
    }

Затем я пытаюсь передать параметр, содержащий xml, в виде строки: "<messages><message>message</message></messages>".В этом нет ничего плохого, если я буду использовать консоль для вызова приложения.Но в случае, когда я пытаюсь отладить такое приложение, я добавил строку параметра в Аргументы командной строки на вкладке Отладка .

alt text После этого у меня естьполучил неожиданный вывод вроде:

 ^<messages^>^<message^>message^</message^>^</messages^>

Почему у нас такой вывод и как его преодолеть?Заранее спасибо.


Самое простое решение этой проблемы - заменить нежелательные символы, как здесь:

static void Main (string [] args) {string msg = args [0];
Console.WriteLine (msg.Replace ("^", "");}

Но причина такого поведения заложена где-то в ядре операционной системы. Windows справляется с такой ситуацией, как запускпакетный файл из командной строки с параметрами. Перейдя по ссылке, представленной в ответе @Artem K., вы можете узнать, что существует два способа преодоления такой ситуации. К сожалению, никто не работает с этой проблемой. Возможно, потому что Visual Studioдобавьте что-нибудь от себя в вопросе, как передать аргументы для запуска пакета.

Ответы [ 2 ]

0 голосов
/ 25 апреля 2012

в Shell, <и> имеют особые значения, учитывающие перенаправление steam. Что делает возможным dir / w> myDirectory.txt или tree |больше Etc ...

Следите за сообщением @Artem Koshelev, чтобы обойти это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...