是否可以启动devenv.exe并从cmder打开.sln文件?从命令行克隆git repo之后,我想在Visual Studio中快速打开解决方案,而不必离开cmder。
答案 0 :(得分:4)
Danny是对的,你只需输入xxx.sln
即可。
我有点懒,开发了下面的脚本,可以输入vs
,它会找到并打开它在当前目录中找到的第一个sln文件。
以下是一些示例命令:
vs
- 将打开它找到的第一个sln文件,如果它找不到它只会在没有解决方案的情况下打开Visual Studio。我默认使用Visual Studio 2017打开。只需更改default
函数中的Get-VisualStudioCommand
大小写,如果您更默认为其他版本。vs 15
- 我的计算机上有很多版本的Visual Studio,因此这将与vs
类似地打开,但将在Visual Studio 2015中打开。vs 13 'helloWorld.sln'
- 这会打开一个特定的sln文件,即helloWorld.sln
。我最近工作的一个项目在同一目录中有多个解决方案。vs -WhatIf -Verbose
- 这将显示脚本运行时将执行的操作,并将打印出Write-Verbose消息。方便调试。我在下面的图片中展示了这个例子。对于此解决方案,我假设您正在使用PowerShell控制台。如果是这样,您可以定义一个.ps1
文件,该文件将在控制台通过-File
选项打开之前运行。这就像为每个控制台窗口定义不同的PowerShell配置文件(非常强大)。
请参阅下面的图片,其中显示转到设置并修改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,I'我们刚刚创建了这些快捷方式。
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 Studio\2017\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
如果您有任何疑问,请与我们联系。我希望它有所帮助。
答案 1 :(得分:0)
在提示符(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”打开解决方案文件夹中的第一个* .sln并高兴!