/// <summary> /// Gets the user snippet directories. These are used for the save as dialog /// </summary> private void GetUserSnippetDirectories() { string vsDocDir = RegistryLocations.GetVisualStudioUserDataPath(SnippetDesignerPackage.Instance.VSVersion); string snippetDir = Path.Combine(vsDocDir, StringConstants.SnippetDirectoryName); userSnippetDirectories[Resources.DisplayNameCSharp] = Path.Combine(snippetDir, Path.Combine(StringConstants.SnippetDirNameCSharp, StringConstants.MySnippetsDir)); userSnippetDirectories[Resources.DisplayNameVisualBasic] = Path.Combine(snippetDir, Path.Combine(StringConstants.SnippetDirNameVisualBasic, StringConstants.MySnippetsDir)); userSnippetDirectories[Resources.DisplayNameXML] = Path.Combine(snippetDir, Path.Combine(StringConstants.SnippetDirNameXML, StringConstants.MyXmlSnippetsDir)); userSnippetDirectories[Resources.DisplayNameSQL] = Path.Combine(snippetDir, Path.Combine(StringConstants.SnippetDirNameSQL, StringConstants.MySnippetsDir)); if (!SnippetDesignerPackage.Instance.IsVisualStudio2010) { userSnippetDirectories[Resources.DisplayNameCPP] = Path.Combine(snippetDir, Path.Combine(StringConstants.SnippetDirNameCPP, StringConstants.MySnippetsDir)); userSnippetDirectories[Resources.DisplayNameJavaScript] = Path.Combine(snippetDir, Path.Combine(StringConstants.SnippetDirNameJavaScriptVS11, StringConstants.MySnippetsDir)); } if (!SnippetDesignerPackage.Instance.IsVisualStudio2010 && !SnippetDesignerPackage.Instance.IsVisualStudio2012) { userSnippetDirectories[Resources.DisplayNameXAML] = Path.Combine(snippetDir, StringConstants.SnippetDirNameXAML); } var webDevSnippetDir = Path.Combine(snippetDir, StringConstants.VisualWebDeveloper); if (SnippetDesignerPackage.Instance.IsVisualStudio2010) { userSnippetDirectories[Resources.DisplayNameJavaScript] = Path.Combine(webDevSnippetDir, StringConstants.SnippetDirNameJavaScript); } userSnippetDirectories[Resources.DisplayNameHTML] = Path.Combine(webDevSnippetDir, StringConstants.SnippetDirNameHTML); userSnippetDirectories[String.Empty] = snippetDir; }
/// <summary> /// Gets the install root. /// </summary> /// <param name="version"> </param> /// <returns></returns> private static string GetInstallRoot(string version) { string fullName = SnippetDesignerPackage.Instance.Dte.Application.FullName; string vsDirPath = Path.GetFullPath(Path.Combine(fullName, @"..\..\..\")); if (!Directory.Exists(vsDirPath)) { vsDirPath = Path.GetFullPath(Path.Combine(RegistryLocations.GetVSInstallDir(version), @"..\..\")); } return(vsDirPath); }
private void GetSnippetDirectoriesFromRegistry(RegistryKey rootKey, bool configSection, string version) { try { using (RegistryKey vsKey = RegistryLocations.GetVSRegKey(rootKey, configSection, version)) { if (vsKey == null) { return; } using (RegistryKey codeExpansionKey = vsKey.OpenSubKey("Languages\\CodeExpansions")) { foreach (string lang in codeExpansionKey.GetSubKeyNames()) { try { using (var langKey = codeExpansionKey.OpenSubKey(lang)) { AddPathsFromRegistryKey(langKey, "ForceCreateDirs"); AddPathsFromRegistryKey(langKey, "Paths"); } } catch (NullReferenceException e) { SnippetDesignerPackage.Instance.Logger.Log(string.Format("Cannot find registry values for {0}", lang), "SnippetDirectories", e); } catch (ArgumentException e) { SnippetDesignerPackage.Instance.Logger.Log(string.Format("Cannot find registry values for {0}", lang), "SnippetDirectories", e); } } } } } catch (ArgumentException e) { SnippetDesignerPackage.Instance.Logger.Log("Cannot acces registry", "SnippetDirectories", e); } catch (NullReferenceException e) { SnippetDesignerPackage.Instance.Logger.Log("Cannot acces registry", "SnippetDirectories", e); } catch (SecurityException e) { SnippetDesignerPackage.Instance.Logger.Log("Cannot acces registry", "SnippetDirectories", e); } }
/// <summary> /// Initializes a new instance of the <see cref="SnippetDirectories"/> class. /// </summary> private SnippetDirectories() { var version = SnippetDesignerPackage.Instance.VSVersion; IUIHostLocale localeHost = (IUIHostLocale)SnippetDesignerPackage.Instance.GetService(typeof(IUIHostLocale)); uint lcid = (uint)CultureInfo.CurrentCulture.LCID; localeHost.GetUILocale(out lcid); registryPathReplacements.Add("%InstallRoot%", GetInstallRoot(version)); registryPathReplacements.Add("%LCID%", lcid.ToString()); registryPathReplacements.Add("%MyDocs%", RegistryLocations.GetVisualStudioUserDataPath(version)); replaceRegex = new Regex("(%InstallRoot%)|(%LCID%)|(%MyDocs%)", RegexOptions.Compiled); GetUserSnippetDirectories(); GetSnippetDirectoriesFromRegistry(Registry.LocalMachine, false, version); GetSnippetDirectoriesFromRegistry(Registry.CurrentUser, true, version); }
/// <summary> /// Gets the install root. /// </summary> /// <param name="version"> </param> /// <returns></returns> private static string GetInstallRoot(string version) { string fullName = SnippetDesignerPackage.Instance.Dte.Application.FullName; string pathRoot = Path.GetPathRoot(fullName); string[] parts = fullName.Split(Path.DirectorySeparatorChar); string vsDirPath = ""; if (parts.Length >= 3) { vsDirPath = Path.Combine(pathRoot, Path.Combine(parts[1], parts[2])); } else { vsDirPath = RegistryLocations.GetVSInstallDir(version) + @"..\..\"; } return(vsDirPath); }
private static string GetSnippetSchemaPath() { int uiLanguage = RegistryLocations.GetVSUILanguage(); string snippetSchema = string.Format(SnippetSchemaFormat, uiLanguage); if (File.Exists(snippetSchema)) { return(snippetSchema); } snippetSchema = string.Format(SnippetSchemaFormat, CultureInfo.CurrentCulture.LCID); if (File.Exists(snippetSchema)) { return(snippetSchema); } snippetSchema = string.Format(SnippetSchemaFormat, 1033); if (File.Exists(snippetSchema)) { return(snippetSchema); } return(null); }