<#@template hostspecific="true" language="C#" #> <#@assembly Name="System.Core" #> <#@assembly Name="System.Xml" #> <#@assembly Name="System.Xml.Linq" #> <#@import namespace="System" #> <#@import namespace="System.Collections.Generic" #> <#@import namespace="System.IO" #> <#@import namespace="System.Linq" #> <#@import namespace="System.Text" #> <#@import namespace="System.Xml" #> <#@import namespace="System.Xml.Linq" #> <#@assembly name="$(AssemblyRef_Microsoft_VisualStudio_Interop)" #> <#@assembly name="$(AssemblyRef_EnvDTE)" #> <#@import namespace="EnvDTE" #> <#@assembly name="$(VsSdk_Shell_Interop)" #> <#@import namespace="Microsoft.VisualStudio.Shell.Interop" #> <# /**************************************************************************** ** ** Copyright (C) 2018 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt VS Tools. ** ** $QT_BEGIN_LICENSE:GPL-EXCEPT$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see https://www.qt.io/terms-conditions. For further ** information use the contact form at https://www.qt.io/contact-us. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3 as published by the Free Software ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT ** included in the packaging of this file. Please review the following ** information to ensure the GNU General Public License requirements will ** be met: https://www.gnu.org/licenses/gpl-3.0.html. ** ** $QT_END_LICENSE$ ** ****************************************************************************/ DTE Dte = null; try { Dte = ((IServiceProvider)Host)?.GetService(typeof(DTE)) as DTE; } catch { } IVsShell VsShell = null; try { VsShell = ((IServiceProvider)Host)?.GetService(typeof(SVsShell)) as IVsShell; } catch { } string SolutionDir = Host?.ResolveParameterValue("-", "-", "SolutionDir"); if (string.IsNullOrEmpty(SolutionDir)) { if (Dte != null) SolutionDir = Path.GetDirectoryName(Dte.Solution.FullName); else throw new Exception("Unable to obtain 'SolutionDir' parameter."); } string DevEnvDir = Host?.ResolveParameterValue("-", "-", "DevEnvDir"); if (string.IsNullOrEmpty(DevEnvDir)) { if (VsShell != null) { object vsShellPropValue = null; VsShell.GetProperty((int)__VSSPROPID.VSSPROPID_InstallDirectory, out vsShellPropValue); DevEnvDir = vsShellPropValue as string; if (string.IsNullOrEmpty(DevEnvDir)) throw new Exception("Unable to obtain 'DevEnvDir' parameter."); } else { throw new Exception("Unable to obtain 'DevEnvDir' parameter."); } } string VS_VERSION = Host?.ResolveParameterValue("-", "-", "VisualStudioVersion"); if (string.IsNullOrEmpty(VS_VERSION)) { if (Dte != null) VS_VERSION = Dte.Version; else throw new Exception("Unable to obtain 'VisualStudioVersion' parameter."); } string VS_NAME = VS_VERSION.StartsWith("17.") ? "2022" : VS_VERSION.StartsWith("16.") ? "2019" : VS_VERSION.StartsWith("15.") ? "2017" : VS_VERSION.StartsWith("14.") ? "2015" : VS_VERSION.StartsWith("12.") ? "2013" : "????"; string VC_TARGETS_PATH = Host?.ResolveParameterValue("-", "-", "VCTargetsPath"); if (string.IsNullOrEmpty(VC_TARGETS_PATH)) { if (Dte != null && !string.IsNullOrEmpty(VS_VERSION)) { string VS_EDITION = Dte.Edition; if (VS_VERSION.StartsWith("17.")) { VC_TARGETS_PATH = Path.Combine( Environment.GetEnvironmentVariable("ProgramFiles"), @"Microsoft Visual Studio\2022", @"Preview", @"MSBuild\Microsoft\VC\v170"); } else { VC_TARGETS_PATH = Path.Combine( Environment.GetEnvironmentVariable("ProgramFiles(x86)"), VS_VERSION.StartsWith("16.") ? @"Microsoft Visual Studio\2019\" + VS_EDITION + @"\MSBuild\Microsoft\VC\v160" : VS_VERSION.StartsWith("15.") ? @"Microsoft Visual Studio\2017\" + VS_EDITION + @"\Common7\IDE\VC\VCTargets" : VS_VERSION.StartsWith("14.") ? @"MSBuild\Microsoft.Cpp\v4.0\V140" : VS_VERSION.StartsWith("12.") ? @"MSBuild\Microsoft.Cpp\v4.0\V120" : null); } } else { throw new Exception("Unable to obtain 'VCTargetsPath' parameter."); } } /***************************************************************************/ string WARNING_GENERATED_FILE = "This file was generated automatically."; string XML_COMMENT_BEGIN = ""; XML_COMMENT_BEGIN = XML_COMMENT_BEGIN.ToString(); XML_COMMENT_END = XML_COMMENT_END.ToString(); var XmlLoad = new Func(xmlText => { XDocument xmlDoc = null; using (var reader = XmlReader.Create(new StringReader(xmlText))) xmlDoc = XDocument.Load(reader); var xmlRoot = xmlDoc.Root; xmlRoot.Descendants().ToList().ForEach(x => x.Name = x.Name.LocalName); return xmlRoot; }); var XmlPrint = new Func, string>(x => { var xmlOut = new StringBuilder(); var xmlOutSettings = new XmlWriterSettings() { ConformanceLevel = ConformanceLevel.Fragment, OmitXmlDeclaration = true, Indent = true, }; using (var xmlOutWriter = XmlWriter.Create(xmlOut, xmlOutSettings)) { foreach (var y in x) y.WriteTo(xmlOutWriter); } return xmlOut.ToString(); }); #>