Visual studio 从命令行导出/导入Visual Studio设置

Visual studio 从命令行导出/导入Visual Studio设置,visual-studio,automation,settings,Visual Studio,Automation,Settings,如何从命令行或使用C#导出/导入VS 2010/2012设置?甚至可以不借助GUI自动化吗?您可以通过提供带有/ResetSettings参数的设置文件来实现导入 devenv /ResetSettings c:\full\path\to\your\own.vssettings 这项工作从VS2005开始 虽然您可以从命令行导入,但如果您不知道,从命令行中没有导出功能。为此,您可以使用宏: Sub ExportMacro() DTE.ExecuteCommand("Tools.Impo

如何从命令行或使用C#导出/导入VS 2010/2012设置?甚至可以不借助GUI自动化吗?

您可以通过提供带有
/ResetSettings
参数的设置文件来实现导入

devenv /ResetSettings c:\full\path\to\your\own.vssettings
这项工作从VS2005开始

虽然您可以从命令行导入,但如果您不知道,从命令行中没有导出功能。为此,您可以使用宏:

Sub ExportMacro()
    DTE.ExecuteCommand("Tools.ImportandExportSettings", "/export:own.vssettings")
End Sub 
或者从命令行c#应用程序(/reference EnvDte)

要从宏和/或c#程序导入,请使用/import替换/导出


无需重置,在PowerShell中:

function Import-VisualStudioSettingsFile {
    [CmdletBinding()]
    param(
        [string] $FullPathToSettingsFile,
        [string] $DevEnvExe = "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe",
        [int] $SecondsToSleep = 20 # should be enough for most machines
    )

    if(-not (Test-Path $DevEnvExe)) {
        throw "Could not find visual studio at: $DevEnvExe - is it installed?"
    }

    if(-not (Test-Path $FullPathToSettingsFile)) {
        throw "Could not find settings file at: $FullPathToSettingsFile"
    }

    $SettingsStagingFile = "C:\Windows\temp\Settings.vssettings" # must be in a folder without spaces
    Copy-Item $FullPathToSettingsFile $SettingsStagingFile -Force -Confirm:$false

    $Args = "/Command `"Tools.ImportandExportSettings /import:$SettingsStagingFile`""
    Write-Verbose "$Args"
    Write-Host "Setting Tds Options, will take $SecondsToSleep seconds"
    $Process = Start-Process -FilePath $DevEnvExe -ArgumentList $Args -Passthru
    Sleep -Seconds $SecondsToSleep #hack: couldnt find a way to exit when done
    $Process.Kill()
}

可以从powershell导入和导出。要将当前设置导出到
$outFileName

这要求visual studio正在运行。(您可以通过调用devenv从脚本中执行此操作)

首先,在
中添加文件名以允许在文件路径中使用空格:

$filenameEscaped="`"$outFileName`""

$dte = [System.Runtime.InteropServices.Marshal]::GetActiveObject("VisualStudio.DTE.15.0") 
$dte.ExecuteCommand("Tools.ImportandExportSettings", '/export:'+$filenameEscaped)
(可选)退出:

$dte.ExecuteCommand("File.Exit")
要导入,请使用devenv.exe的/ResetSettings选项。或者,要导入而不重置:`

$dte.ExecuteCommand("Tools.ImportandExportSettings", '/import:'+$filenameEscaped)


这个答案是@rene的C#答案的一个端口。出于某种原因,我必须指定visual studio
DTE.15.0

的确切版本,并从宏导入?什么是
owncsharp
?将导出切换到导入,冒号后面是文件名。是否可以只导入文件中的设置,而不重置所有内容g?@NelsonRothermel我不认为/resetsettings确实会重置所有设置,然后它会在完成后导入你的.vssettings。因此,如果你的.vssettings文件是部分文件(在我的情况下,仅是C#settings),你不能使用/resetsettings导入它而不覆盖其他所有内容。+更多信息:我重复:这要求visual studio正在运行。(你可以从脚本中调用devenv来实现这一点)。“对于像我这样只是尝试命令而没有阅读到目前为止的人来说。
$dte.ExecuteCommand("Tools.ImportandExportSettings", '/import:'+$filenameEscaped)