首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从cmder打开.sln文件?

从cmder打开.sln文件?
EN

Stack Overflow用户
提问于 2017-09-21 03:15:43
回答 2查看 3.4K关注 0票数 5

是否可以从cmder启动devenv.exe并打开.sln文件?在从命令行克隆git之后,我想在Visual中快速打开解决方案,而不必离开cmder。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-06 04:12:46

丹尼是对的,你只需输入xxx.sln

我有点懒,开发了下面的脚本,以便能够输入vs,它将找到并打开它在当前目录中找到的第一个sln文件。

下面是一些示例命令:

  1. vs -将打开它找到的第一个sln文件,如果找不到它就会打开Visual而没有解决方案。默认使用Visual 2017打开。如果您希望默认使用不同的版本,只需更改Get-VisualStudioCommand函数中的Get-VisualStudioCommand大小写即可。
  2. vs 15 --我的机器上有很多版本的Visual,因此这将类似于vs,但将在Visual 2015中打开。
  3. vs 13 'helloWorld.sln' -这将打开一个特定的sln文件,即helloWorld.sln。我最近参与的一个项目在同一个目录中有多个解决方案。
  4. vs -WhatIf -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 command...this是PowerShell控制台一样):

如果您将以下脚本添加到C:\src\ps\Cmder\general_setup.ps1文件(或您想将其放在任何位置),那么...you可以键入vs并执行它。注意,在Get-VisualStudioCommand函数中,我已经将所有文件paths...not放在了最优雅的代码中,但是如果您的devenv.exe文件路径与我的不同,只需在那里更改它们。

注意,您还可以添加一个传递到-ArgumentList或标志的/SafeMode命令,以便在需要时能够在安全模式下打开Visual,我刚刚创建了这些快捷方式。

代码语言:javascript
运行
复制
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

如果你有任何问题,请告诉我。希望能帮上忙。

票数 8
EN

Stack Overflow用户

发布于 2019-01-31 13:11:51

在提示符(cmd、cmder等)中运行此命令

代码语言:javascript
运行
复制
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,并感到高兴!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46334892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档