gpt4 book ai didi

cmder - 从cmder打开.sln文件?

转载 作者:行者123 更新时间:2023-12-01 10:02:49 24 4
gpt4 key购买 nike

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

最佳答案

丹尼是对的,你只需输入 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 控制台):
    cmder setup

    如果将以下脚本添加到 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 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

    如果您有任何问题,请告诉我。我希望它有帮助。

    关于cmder - 从cmder打开.sln文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46334892/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com