Вопрос:
Как экспортировать/импортировать параметры VS 2010/2012 из командной строки или с помощью С#? Возможно ли это даже без использования GUI Automation?
Лучший ответ:
Вы можете добиться импорта, предоставив файл настроек с аргументом /ResetSettings.
devenv /ResetSettings c:fullpathtoyourown.vssettings
Это работает с VS2005 и далее.
Несмотря на то, что вы можете импортировать из командной строки, AFAIK не имеет функции экспортировать из командной строки. Для этого вы можете использовать макрос:
Sub ExportMacro() DTE.ExecuteCommand(«Tools.ImportandExportSettings», «/export:own.vssettings») End Sub
Или из командной строки С# application (/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); }
Чтобы импортировать из макроса и/или С# программу replace/export с помощью /import
Ответ №1
Без сброса, в PowerShell:
function Import-VisualStudioSettingsFile { [CmdletBinding()] param( [string] $FullPathToSettingsFile, [string] $DevEnvExe = «C:Program Files (x86)Microsoft Visual Studio 14.0Common7IDEdevenv.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:WindowstempSettings.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
Импорт и экспорт возможен из powershell. Чтобы экспортировать текущие настройки в $outFileName:
Для этого требуется, чтобы визуальная студия работала. (вы можете сделать это из script, просто вызвав devenv).
Сначала добавьте имя файла в «, чтобы разрешить пробелы в пути к файлам:
$filenameEscaped=»`»$outFileName`»» $dte = [System.Runtime.InteropServices.Marshal]::GetActiveObject(«VisualStudio.DTE.15.0») $dte.ExecuteCommand(«Tools.ImportandExportSettings», ‘/export:’+$filenameEscaped)
Необязательно, выход:
$dte.ExecuteCommand(«File.Exit»)
Чтобы импортировать, используйте параметр /ResetSettings для devenv.exe. Или, чтобы импортировать без сброса: `
$dte.ExecuteCommand(«Tools.ImportandExportSettings», ‘/import:’+$filenameEscaped)
Этот ответ представляет собой порт ответа @rene С#. По какой-то причине мне пришлось указать точную версию visual studio DTE.15.0.