如何从命令行或使用C#导出/导入VS 2010/2012设置?是否可以不使用GUI Automation?
答案 0 :(得分:9)
您可以通过提供带有/ResetSettings
参数的设置文件来实现导入。
devenv /ResetSettings c:\full\path\to\your\own.vssettings
这适用于VS2005以后。
虽然您可以从命令行导入,但AFAIK命令行中没有导出功能。为此你可以使用宏:
Sub ExportMacro()
DTE.ExecuteCommand("Tools.ImportandExportSettings", "/export:own.vssettings")
End Sub
或者从命令行c#应用程序(/ reference EnvDte)
static void Main(string[] args)
{
var filename = "own.vssettings";
var dte = (EnvDTE.DTE) System.Runtime.InteropServices.Marshal.
GetActiveObject("VisualStudio.DTE"); // version neutral
dte.ExecuteCommand("Tools.ImportandExportSettings", "/export:" + filename);
}
要从宏和/或c#程序导入 / export / import
答案 1 :(得分:2)
不重置,在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()
}
答案 2 :(得分:2)
可以从 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
的确切版本。