从 cmder 打开 .sln 文件?
Open .sln file from cmder?
是否可以启动 devenv.exe 并从 cmder 打开 .sln 文件?从命令行克隆 git 存储库后,我想在 Visual Studio 中快速打开解决方案,而不必离开 cmder。
Danny 是正确的,您只需输入 xxx.sln
。
我有点懒,开发了下面的脚本,可以输入 vs
,它会找到并打开在当前目录中找到的第一个 sln 文件。
以下是一些示例命令:
vs
- 将打开它找到的第一个 sln 文件,如果没有找到,它只会打开 Visual Studio 而没有解决方案。我默认使用 Visual Studio 2017 打开。如果您希望默认使用不同的版本,只需更改 Get-VisualStudioCommand
函数中的 default
大小写即可。
vs 15
- 我的机器上有一堆 Visual Studio 版本,所以它的打开方式与 vs
类似,但会以 Visual Studio 2015 打开。
vs 13 'helloWorld.sln'
- 这将打开一个特定的 sln 文件,即 helloWorld.sln
。我最近从事的项目之一在同一目录中有多个解决方案。
vs -WhatIf -Verbose
- 这将向您展示如果脚本 运行 会做什么,并将打印出 Write-Verbose 消息。便于调试。我在下图中展示了这个示例。
对于此解决方案,我假设您使用的是 PowerShell 控制台。如果是这样,您可以定义一个 .ps1
文件,该文件将在通过 -File
选项打开控制台之前 运行。这就像用每个控制台的不同命令定义不同的 PowerShell 配置文件 window(非常强大)。
参见下图,我在其中显示了转到设置并修改 PowerShell:PowerShell
任务以执行 PowerShell -NoExit -NoLogo -File C:\src\ps\Cmder\general_setup.ps1 -new_console:d:"C:\src"
这是图像(请注意,尽管我使用 ls
的别名,它在 PowerShell 中的输出类似于 Linux ls
命令...这是一个 PowerShell 控制台):
如果您将以下脚本添加到 C:\src\ps\Cmder\general_setup.ps1
文件(或您想要放置它的任何位置)...然后您可以输入 vs
它将执行。请注意,在 Get-VisualStudioCommand
函数中,我已经放置了所有文件路径……这不是最优雅的代码,但如果 devenv.exe
的文件路径与我的不同,只需更改它们即可。
请注意,您也可以花点心思,为 -ArgumentList
添加一个直通或 /SafeMode
命令的标志,以便在需要时能够在安全模式下打开 Visual Studio ,我刚刚创建了这些作为快捷方式。
function Get-VisualStudioCommand
{
[CmdletBinding()]
param ( [AllowNull()][String] $vsVersion )
$vs10 = """${env:ProgramFiles(x86)}\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe"""
$vs13 = """${env:ProgramFiles(x86)}\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe"""
$vs15 = """${env:ProgramFiles(x86)}\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe"""
$vs17 = """${env:ProgramFiles(x86)}\Microsoft Visual Studio17\Professional\Common7\IDE\devenv.exe"""
switch ($vsVersion)
{
'10' {$vs10}
'13' {$vs13}
'15' {$vs15}
'17' {$vs17}
default {$vs17}
}
}
function Get-SolutionName
{
[CmdletBinding()]
param ( [AllowNull()][String] $Name )
if (!$Name)
{
$Name = Get-ChildItem -Filter *.sln
}
if ($Name)
{
$Name = ('"{0}"' -f $Name)
}
return $Name
}
function Start-VisualStudioProcess
{
[CmdletBinding(SupportsShouldProcess=$true)]
param([String]$Version, [String]$Sln)
$VsCommand = Get-VisualStudioCommand -vsVersion $Version
$Sln = Get-SolutionName -Name $Sln
Write-Verbose -Message ('Starting: command={0} solutionName={1}' -f $VsCommand, $Sln)
if ($PSCmdlet.ShouldProcess($VsCommand, 'Start-Process'))
{
if ($Sln)
{
Start-Process -FilePath $vsCommand -ArgumentList $sln
}
else
{
Start-Process -FilePath $vsCommand
}
}
}
Set-Alias -Name vs -Value Start-VisualStudioProcess
如果您有任何问题,请告诉我。希望对你有帮助。
运行 在您的提示符(cmd、cmder 等)中执行此命令
reg add "HKCU\Software\Microsoft\Command Processor" /v Autorun /d "doskey vs=for /f \"delims=\" %a IN ('dir /b *.sln') do start %a" /f
写"vs"打开Solution文件夹中的第一个*.sln,开心就好!
是否可以启动 devenv.exe 并从 cmder 打开 .sln 文件?从命令行克隆 git 存储库后,我想在 Visual Studio 中快速打开解决方案,而不必离开 cmder。
Danny 是正确的,您只需输入 xxx.sln
。
我有点懒,开发了下面的脚本,可以输入 vs
,它会找到并打开在当前目录中找到的第一个 sln 文件。
以下是一些示例命令:
vs
- 将打开它找到的第一个 sln 文件,如果没有找到,它只会打开 Visual Studio 而没有解决方案。我默认使用 Visual Studio 2017 打开。如果您希望默认使用不同的版本,只需更改Get-VisualStudioCommand
函数中的default
大小写即可。vs 15
- 我的机器上有一堆 Visual Studio 版本,所以它的打开方式与vs
类似,但会以 Visual Studio 2015 打开。vs 13 'helloWorld.sln'
- 这将打开一个特定的 sln 文件,即helloWorld.sln
。我最近从事的项目之一在同一目录中有多个解决方案。vs -WhatIf -Verbose
- 这将向您展示如果脚本 运行 会做什么,并将打印出 Write-Verbose 消息。便于调试。我在下图中展示了这个示例。
对于此解决方案,我假设您使用的是 PowerShell 控制台。如果是这样,您可以定义一个 .ps1
文件,该文件将在通过 -File
选项打开控制台之前 运行。这就像用每个控制台的不同命令定义不同的 PowerShell 配置文件 window(非常强大)。
参见下图,我在其中显示了转到设置并修改 PowerShell:PowerShell
任务以执行 PowerShell -NoExit -NoLogo -File C:\src\ps\Cmder\general_setup.ps1 -new_console:d:"C:\src"
这是图像(请注意,尽管我使用 ls
的别名,它在 PowerShell 中的输出类似于 Linux ls
命令...这是一个 PowerShell 控制台):
如果您将以下脚本添加到 C:\src\ps\Cmder\general_setup.ps1
文件(或您想要放置它的任何位置)...然后您可以输入 vs
它将执行。请注意,在 Get-VisualStudioCommand
函数中,我已经放置了所有文件路径……这不是最优雅的代码,但如果 devenv.exe
的文件路径与我的不同,只需更改它们即可。
请注意,您也可以花点心思,为 -ArgumentList
添加一个直通或 /SafeMode
命令的标志,以便在需要时能够在安全模式下打开 Visual Studio ,我刚刚创建了这些作为快捷方式。
function Get-VisualStudioCommand
{
[CmdletBinding()]
param ( [AllowNull()][String] $vsVersion )
$vs10 = """${env:ProgramFiles(x86)}\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe"""
$vs13 = """${env:ProgramFiles(x86)}\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe"""
$vs15 = """${env:ProgramFiles(x86)}\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe"""
$vs17 = """${env:ProgramFiles(x86)}\Microsoft Visual Studio17\Professional\Common7\IDE\devenv.exe"""
switch ($vsVersion)
{
'10' {$vs10}
'13' {$vs13}
'15' {$vs15}
'17' {$vs17}
default {$vs17}
}
}
function Get-SolutionName
{
[CmdletBinding()]
param ( [AllowNull()][String] $Name )
if (!$Name)
{
$Name = Get-ChildItem -Filter *.sln
}
if ($Name)
{
$Name = ('"{0}"' -f $Name)
}
return $Name
}
function Start-VisualStudioProcess
{
[CmdletBinding(SupportsShouldProcess=$true)]
param([String]$Version, [String]$Sln)
$VsCommand = Get-VisualStudioCommand -vsVersion $Version
$Sln = Get-SolutionName -Name $Sln
Write-Verbose -Message ('Starting: command={0} solutionName={1}' -f $VsCommand, $Sln)
if ($PSCmdlet.ShouldProcess($VsCommand, 'Start-Process'))
{
if ($Sln)
{
Start-Process -FilePath $vsCommand -ArgumentList $sln
}
else
{
Start-Process -FilePath $vsCommand
}
}
}
Set-Alias -Name vs -Value Start-VisualStudioProcess
如果您有任何问题,请告诉我。希望对你有帮助。
运行 在您的提示符(cmd、cmder 等)中执行此命令
reg add "HKCU\Software\Microsoft\Command Processor" /v Autorun /d "doskey vs=for /f \"delims=\" %a IN ('dir /b *.sln') do start %a" /f
写"vs"打开Solution文件夹中的第一个*.sln,开心就好!