#powershell
#powershell
Вопрос:
В настройках моего профиля для powershell у меня есть следующие строки:
set-alias vs startVisualStudio
function startVisualStudio {
Start-Process -FilePath "C:Program Files (x86)Microsoft Visual Studio2019CommunityCommon7IDEdevenv.exe" .\*.sln
}
Когда я перехожу к каталогу, содержащему .sln
файл и тип vs
, Visual Studio открывается на начальном экране по умолчанию, сообщая мне об этом .*.sln could not be found
. Я пробовал несколько способов включения звездочки, например 'backtick'*.sln
, /*.sln
среди прочих, но всегда одно и то же сообщение. Если я заменю .*.sln
на простой .
и запущу vs
, он откроет текущий каталог в Visual Studio, однако не как решение. Как я могу написать эту функцию, чтобы открыть файл .sln в текущем каталоге в Visual Studio?
Ответ №1:
*
не разворачивается powershell, он просто передаст его в Visual Studio. Visual Studio тоже этого не сделает, поэтому вам придется сделать это самостоятельно. Найдите все файлы решения в папке и найдите первый. Произойдет сбой, если отсутствуют sln-файлы.
set-alias vs startVisualStudio
function startVisualStudio
{
$slnfile = (Get-ChildItem -Path . -Filter *.sln)[0].Name
Start-Process -FilePath "C:Program Files (x86)Microsoft Visual Studio2019CommunityCommon7IDEdevenv.exe" $slnfile
}
Ответ №2:
Я получил эту работу рекурсивно (Powershell 7.0) и в подкаталогах, выполнив следующее:
Откройте powershell, введите
echo $profile
Откройте местоположение вашего профиля, сохраните в нем приведенное ниже:
function vs
{
Get-ChildItem *.sln -Recurse | Invoke-Item
}
Затем просто введите vs в папку, и он откроет файл решения во всех содержащих папках