Powershell (.NET) и конвейер
Возможно, вы сможете использовать Windows Powershell для передачи между выводом классической программы и командлетами, встроенными в .NET,Поскольку он передает объекты вместо необработанного текста между программами, Я не уверен, что он совместим с классическими строками, хотя вы можете найти здесь уникальное решение, поэтому я опубликую его сейчас и обновлю позже, если будет найден более конкретный вариант....
Обновление:
В Powershell я провел тестирование и обнаружил, что классический вывод текста можно передавать в командлеты .NET.Например, я взял стандартный текстовый вывод из справочного экрана компилятора C # и передал его в конструкцию ForEach-Object - в этом случае каждый объект представляет собой строку .NET, поскольку классический вывод представлен в текстовом виде.
# In Powerhsell.exe #
C:\Windows\Microsoft.NET\Framework\v2.0.50727\csc.exe /? | ForEach-Object -Process {"LINE: " + $_}
Он выдал следующий вывод, который подтверждает концепцию - действительно, он добавлял фразу «LINE:» к каждой строке текста.
LINE: - ERRORS AND WARNINGS -
LINE: /warnaserror[+|-] Report all warnings as errors
LINE: /warnaserror[+|-]:<warn list> Report specific warnings as errors
LINE: /warn:<n> Set warning level (0-4) (Short form: /w)
LINE: /nowarn:<warn list> Disable specific warning messages
LINE:
LINE: - LANGUAGE -
LINE: /checked[+|-] Generate overflow checks
Любой другой .exe, который производит вывод текстав этом примере можно использовать.
Следующие шаги
На основании этого доказательства концепции, показывающей классический текст и объекты .NET, взаимодействующие через трубопровод Powershell, следующим шагом может быть представление вашей программы .NET каккомандлет (для замены вместо конструкции For-Each в примере).Я искал полезную статью о представлении существующего кода .NET в качестве командлета и обнаружил: Создание командлета Windows PowerShell с использованием шаблонов Windows PowerShell для Visual Studio
В основномВы можете представить часть своей существующей логики .NET в качестве командлета, а затем положиться на естественную способность к конвейеру, присущую Powershell.Бонус заключается в том, что вы будете совместимы с Powershell, а другие программы смогут воспользоваться преимуществами использования вашего командлета.
Обновление 2
Дополнительные ресурсы