Как использовать PowerShell для открытия решения Visual Studio в текущем каталоге

#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 в папку, и он откроет файл решения во всех содержащих папках