Как я могу сохранить изменения в Console.Title после жизненного цикла процесса в C #? - PullRequest
0 голосов
/ 05 июля 2018

Powershell может изменять текст заголовка терминала, который переживает процесс, который его устанавливает.

https://github.com/dahlbyk/posh-git/blob/a8adab23190584668b562954e778169c04364755/src/posh-git.psm1

Пример "Posh Git" скрипта Powershell для git, который показывает состояние репозитория git в строке заголовка и подсказку при работе внутри powershell.

На работе у нас есть приложение Console C #, которое я хочу сделать то же самое (установка окна заголовка, но сохранение его в течение жизненного цикла приложения)

Его можно запустить из PowerShell или cmd.

На данный момент я установил название так:

var path = RepositoryHelpers.TryGetContainerRootPath(workingDirectory);
using (var containerRepo = new Repository(path))
{
    Console.Title = $"GitSAFE - {containerRepo.Head.FriendlyName}";
}

Однако свойство Console.Title сбрасывается после завершения процесса.

Как сохранить изменения в заголовке консоли с помощью C #?

1 Ответ

0 голосов
/ 05 июля 2018

Технически вы не можете сохранить изменения, о которых вы просите. Однако вы можете создать скрипт профиля, который устанавливает заголовок при каждом запуске powershell. На компьютере с Windows вы можете создать файл на C:\Users\_your_user_id\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1. Вы можете поставить свои команды там. Недостатком является то, что каждый пользователь должен обновить свой профиль. Существует также профиль компьютера, который влияет на сценарии запуска, которые можно установить с помощью глобальной политики.

Одним из возможных решений является создание сценария, который проверяет сценарий запуска, который можно настроить с помощью инфраструктуры Windows. Вот фрагмент моего профиля, который делает это:

Write-Host "Hello From Your Profile: $PsScriptRoot"
$gitDrive = $env:GitDrive
if ($gitDrive -ne "" -and $gitDrive -ne $null) {
  if (Test-Path "$($gitDrive)") {
    Write-Host "Your GitDrive is $($gitDrive)"
  }
  else {
    Write-Host "Your GitDrive is $($GitDrive) but that path does not exist."  -Fore Yellow
    Write-Host "Update the environment variable to point to your enlistment."  -Fore Yellow
    exit
  }

  if (Test-Path "$($gitDrive)AutoStart.PS1") {
    . "$($gitDrive)AutoStart.PS1"
  }
  exit
}
else {
  Write-Host "Add your GitDrive environment variable to your profile."
}

Пока у вас есть переменная окружения, которая указывает на вашу папку git repos, ее скрипты AutoStart.ps1 запускаются в каждой оболочке. YMMV но это works on my machine.

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