Esempio n. 1
0
        public static async Task Prepare(VsHive hive, IEnumerable <string> extensionsToInstall, bool resetSettings, IDiagnostics diagnostics, bool installInvoker = true)
        {
            await diagnostics.RunAsync("Preparing Instance", async output =>
            {
                var invokerAssembly      = Assembly.GetExecutingAssembly();
                var isProfileInitialized = false;

                using (var invoker = new TempFile(EmbeddedResourceUtil.ExtractResource(invokerAssembly, "VsixTesting.Invoker.vsix")))
                {
                    EmbeddedResourceUtil.ApplyDateTime(invoker.Path, invokerAssembly, "VsixTesting.Invoker.vsix");

                    if (installInvoker)
                    {
                        extensionsToInstall = extensionsToInstall.Concat(new[] { invoker.Path });
                    }

                    isProfileInitialized = await VisualStudioUtil.IsProfileInitializedAsync(hive);
                    var installResult    = await VisualStudioUtil.InstallExtensionsAsync(hive, extensionsToInstall.Concat(new[] { invoker.Path }));

                    output.WriteLine(installResult.Output);

                    if (installResult.InstallCount > 0)
                    {
                        output.WriteLine("Clearing cache");
                        await VisualStudioUtil.ClearCacheAsync(hive);
                        output.WriteLine("Updating configuration");
                        await VisualStudioUtil.UpdateConfigurationAsync(hive);
                    }
                }

                if (!isProfileInitialized || resetSettings)
                {
                    output.WriteLine("Resetting settings");
                    await VisualStudioUtil.ResetSettingsAsync(hive);
                }
            });
        }