Index: obsolete/Microsoft.VisualStudio.Project/SingleFileGeneratorFactory.cs |
diff --git a/obsolete/Microsoft.VisualStudio.Project/SingleFileGeneratorFactory.cs b/obsolete/Microsoft.VisualStudio.Project/SingleFileGeneratorFactory.cs |
deleted file mode 100644 |
index 309198d15bef94710857b8f68421e8fcd6b3de72..0000000000000000000000000000000000000000 |
--- a/obsolete/Microsoft.VisualStudio.Project/SingleFileGeneratorFactory.cs |
+++ /dev/null |
@@ -1,352 +0,0 @@ |
-/// Copyright (c) Microsoft Corporation. All rights reserved. |
- |
-using System; |
-using System.Collections.Generic; |
-using System.Runtime.InteropServices; |
-using Microsoft.VisualStudio; |
-using Microsoft.VisualStudio.OLE.Interop; |
-using Microsoft.VisualStudio.Shell.Interop; |
-using Microsoft.Win32; |
-using VSRegistry = Microsoft.VisualStudio.Shell.VSRegistry; |
- |
-namespace Microsoft.VisualStudio.Project |
-{ |
- /// <summary> |
- /// Provides implementation IVsSingleFileGeneratorFactory for |
- /// </summary> |
- public class SingleFileGeneratorFactory : IVsSingleFileGeneratorFactory |
- { |
- #region nested types |
- private class GeneratorMetaData |
- { |
- #region fields |
- private Guid generatorClsid = Guid.Empty; |
- private int generatesDesignTimeSource = -1; |
- private int generatesSharedDesignTimeSource = -1; |
- private int useDesignTimeCompilationFlag = -1; |
- object generator; |
- #endregion |
- |
- #region ctor |
- /// <summary> |
- /// Constructor |
- /// </summary> |
- public GeneratorMetaData() |
- { |
- } |
- #endregion |
- |
- #region Public Properties |
- /// <summary> |
- /// Generator instance |
- /// </summary> |
- public Object Generator |
- { |
- get |
- { |
- return generator; |
- } |
- set |
- { |
- generator = value; |
- } |
- } |
- |
- /// <summary> |
- /// GeneratesDesignTimeSource reg value name under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\[VsVer]\Generators\[ProjFacGuid]\[GeneratorProgId] |
- /// </summary> |
- public int GeneratesDesignTimeSource |
- { |
- get |
- { |
- return generatesDesignTimeSource; |
- } |
- set |
- { |
- generatesDesignTimeSource = value; |
- } |
- } |
- |
- /// <summary> |
- /// GeneratesSharedDesignTimeSource reg value name under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\[VsVer]\Generators\[ProjFacGuid]\[GeneratorProgId] |
- /// </summary> |
- public int GeneratesSharedDesignTimeSource |
- { |
- get |
- { |
- return generatesSharedDesignTimeSource; |
- } |
- set |
- { |
- generatesSharedDesignTimeSource = value; |
- } |
- } |
- |
- /// <summary> |
- /// UseDesignTimeCompilationFlag reg value name under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\[VsVer]\Generators\[ProjFacGuid]\[GeneratorProgId] |
- /// </summary> |
- public int UseDesignTimeCompilationFlag |
- { |
- get |
- { |
- return useDesignTimeCompilationFlag; |
- } |
- set |
- { |
- useDesignTimeCompilationFlag = value; |
- } |
- } |
- |
- /// <summary> |
- /// Generator Class ID. |
- /// </summary> |
- public Guid GeneratorClsid |
- { |
- get |
- { |
- return generatorClsid; |
- } |
- set |
- { |
- generatorClsid = value; |
- } |
- } |
- #endregion |
- } |
- #endregion |
- |
- #region fields |
- /// <summary> |
- /// Base generator registry key for MPF based project |
- /// </summary> |
- private RegistryKey baseGeneratorRegistryKey; |
- |
- /// <summary> |
- /// CLSID reg value name under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\[VsVer]\Generators\[ProjFacGuid]\[GeneratorProgId] |
- /// </summary> |
- private string GeneratorClsid = "CLSID"; |
- |
- /// <summary> |
- /// GeneratesDesignTimeSource reg value name under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\[VsVer]\Generators\[ProjFacGuid]\[GeneratorProgId] |
- /// </summary> |
- private string GeneratesDesignTimeSource = "GeneratesDesignTimeSource"; |
- |
- /// <summary> |
- /// GeneratesSharedDesignTimeSource reg value name under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\[VsVer]\Generators\[ProjFacGuid]\[GeneratorProgId] |
- /// </summary> |
- private string GeneratesSharedDesignTimeSource = "GeneratesSharedDesignTimeSource"; |
- |
- /// <summary> |
- /// UseDesignTimeCompilationFlag reg value name under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\[VsVer]\Generators\[ProjFacGuid]\[GeneratorProgId] |
- /// </summary> |
- private string UseDesignTimeCompilationFlag = "UseDesignTimeCompilationFlag"; |
- |
- /// <summary> |
- /// Caches all the generators registered for the project type. |
- /// </summary> |
- private Dictionary<string, GeneratorMetaData> generatorsMap = new Dictionary<string, GeneratorMetaData>(); |
- |
- /// <summary> |
- /// The project type guid of the associated project. |
- /// </summary> |
- private Guid projectType; |
- |
- /// <summary> |
- /// A service provider |
- /// </summary> |
- private System.IServiceProvider serviceProvider; |
- #endregion |
- |
- #region ctors |
- /// <summary> |
- /// Constructor for SingleFileGeneratorFactory |
- /// </summary> |
- /// <param name="projectGuid">The project type guid of the associated project.</param> |
- /// <param name="serviceProvider">A service provider.</param> |
- public SingleFileGeneratorFactory(Guid projectType, System.IServiceProvider serviceProvider) |
- { |
- this.projectType = projectType; |
- this.serviceProvider = serviceProvider; |
- } |
- #endregion |
- |
- #region properties |
- /// <summary> |
- /// Defines the project type guid of the associated project. |
- /// </summary> |
- public Guid ProjectGuid |
- { |
- get { return this.projectType; } |
- set { this.projectType = value; } |
- } |
- |
- /// <summary> |
- /// Defines an associated service provider. |
- /// </summary> |
- public System.IServiceProvider ServiceProvider |
- { |
- get { return this.serviceProvider; } |
- set { this.serviceProvider = value; } |
- } |
- #endregion |
- |
- #region IVsSingleFileGeneratorFactory Helpers |
- /// <summary> |
- /// Returns the project generator key under [VS-ConfigurationRoot]]\Generators |
- /// </summary> |
- private RegistryKey BaseGeneratorsKey |
- { |
- get |
- { |
- if(this.baseGeneratorRegistryKey == null) |
- { |
- using(RegistryKey root = VSRegistry.RegistryRoot(__VsLocalRegistryType.RegType_Configuration)) |
- { |
- if(null != root) |
- { |
- string regPath = "Generators\\" + this.ProjectGuid.ToString("B"); |
- baseGeneratorRegistryKey = root.OpenSubKey(regPath); |
- } |
- } |
- } |
- |
- return this.baseGeneratorRegistryKey; |
- } |
- } |
- |
- /// <summary> |
- /// Returns the local registry instance |
- /// </summary> |
- private ILocalRegistry LocalRegistry |
- { |
- get |
- { |
- return this.serviceProvider.GetService(typeof(SLocalRegistry)) as ILocalRegistry; |
- } |
- } |
- #endregion |
- |
- #region IVsSingleFileGeneratorFactory Members |
- /// <summary> |
- /// Creates an instance of the single file generator requested |
- /// </summary> |
- /// <param name="progId">prog id of the generator to be created. For e.g HKLM\SOFTWARE\Microsoft\VisualStudio\9.0Exp\Generators\[prjfacguid]\[wszProgId]</param> |
- /// <param name="generatesDesignTimeSource">GeneratesDesignTimeSource key value</param> |
- /// <param name="generatesSharedDesignTimeSource">GeneratesSharedDesignTimeSource key value</param> |
- /// <param name="useTempPEFlag">UseDesignTimeCompilationFlag key value</param> |
- /// <param name="generate">IVsSingleFileGenerator interface</param> |
- /// <returns>S_OK if succesful</returns> |
- public virtual int CreateGeneratorInstance(string progId, out int generatesDesignTimeSource, out int generatesSharedDesignTimeSource, out int useTempPEFlag, out IVsSingleFileGenerator generate) |
- { |
- Guid genGuid; |
- ErrorHandler.ThrowOnFailure(this.GetGeneratorInformation(progId, out generatesDesignTimeSource, out generatesSharedDesignTimeSource, out useTempPEFlag, out genGuid)); |
- |
- //Create the single file generator and pass it out. Check to see if it is in the cache |
- if(!this.generatorsMap.ContainsKey(progId) || ((this.generatorsMap[progId]).Generator == null)) |
- { |
- Guid riid = VSConstants.IID_IUnknown; |
- uint dwClsCtx = (uint)CLSCTX.CLSCTX_INPROC_SERVER; |
- IntPtr genIUnknown = IntPtr.Zero; |
- //create a new one. |
- ErrorHandler.ThrowOnFailure(this.LocalRegistry.CreateInstance(genGuid, null, ref riid, dwClsCtx, out genIUnknown)); |
- if(genIUnknown != IntPtr.Zero) |
- { |
- try |
- { |
- object generator = Marshal.GetObjectForIUnknown(genIUnknown); |
- //Build the generator meta data object and cache it. |
- GeneratorMetaData genData = new GeneratorMetaData(); |
- genData.GeneratesDesignTimeSource = generatesDesignTimeSource; |
- genData.GeneratesSharedDesignTimeSource = generatesSharedDesignTimeSource; |
- genData.UseDesignTimeCompilationFlag = useTempPEFlag; |
- genData.GeneratorClsid = genGuid; |
- genData.Generator = generator; |
- this.generatorsMap[progId] = genData; |
- } |
- finally |
- { |
- Marshal.Release(genIUnknown); |
- } |
- } |
- } |
- |
- generate = (this.generatorsMap[progId]).Generator as IVsSingleFileGenerator; |
- |
- return VSConstants.S_OK; |
- } |
- |
- /// <summary> |
- /// Gets the default generator based on the file extension. HKLM\Software\Microsoft\VS\9.0\Generators\[prjfacguid]\.extension |
- /// </summary> |
- /// <param name="filename">File name with extension</param> |
- /// <param name="progID">The generator prog ID</param> |
- /// <returns>S_OK if successful</returns> |
- public virtual int GetDefaultGenerator(string filename, out string progID) |
- { |
- progID = ""; |
- return VSConstants.E_NOTIMPL; |
- } |
- |
- /// <summary> |
- /// Gets the generator information. |
- /// </summary> |
- /// <param name="progId">prog id of the generator to be created. For e.g HKLM\SOFTWARE\Microsoft\VisualStudio\9.0Exp\Generators\[prjfacguid]\[wszProgId]</param> |
- /// <param name="generatesDesignTimeSource">GeneratesDesignTimeSource key value</param> |
- /// <param name="generatesSharedDesignTimeSource">GeneratesSharedDesignTimeSource key value</param> |
- /// <param name="useTempPEFlag">UseDesignTimeCompilationFlag key value</param> |
- /// <param name="guiddGenerator">CLSID key value</param> |
- /// <returns>S_OK if succesful</returns> |
- public virtual int GetGeneratorInformation(string progId, out int generatesDesignTimeSource, out int generatesSharedDesignTimeSource, out int useTempPEFlag, out Guid guidGenerator) |
- { |
- RegistryKey genKey; |
- generatesDesignTimeSource = -1; |
- generatesSharedDesignTimeSource = -1; |
- useTempPEFlag = -1; |
- guidGenerator = Guid.Empty; |
- if(string.IsNullOrEmpty(progId)) |
- return VSConstants.S_FALSE; |
- |
- //Create the single file generator and pass it out. |
- if(!this.generatorsMap.ContainsKey(progId)) |
- { |
- // We have to check whether the BaseGeneratorkey returns null. |
- RegistryKey tempBaseGeneratorKey = this.BaseGeneratorsKey; |
- if(tempBaseGeneratorKey == null || (genKey = tempBaseGeneratorKey.OpenSubKey(progId)) == null) |
- { |
- return VSConstants.S_FALSE; |
- } |
- |
- //Get the CLSID |
- string guid = (string)genKey.GetValue(GeneratorClsid, ""); |
- if(string.IsNullOrEmpty(guid)) |
- return VSConstants.S_FALSE; |
- |
- GeneratorMetaData genData = new GeneratorMetaData(); |
- |
- genData.GeneratorClsid = guidGenerator = new Guid(guid); |
- //Get the GeneratesDesignTimeSource flag. Assume 0 if not present. |
- genData.GeneratesDesignTimeSource = generatesDesignTimeSource = (int)genKey.GetValue(this.GeneratesDesignTimeSource, 0); |
- //Get the GeneratesSharedDesignTimeSource flag. Assume 0 if not present. |
- genData.GeneratesSharedDesignTimeSource = generatesSharedDesignTimeSource = (int)genKey.GetValue(GeneratesSharedDesignTimeSource, 0); |
- //Get the UseDesignTimeCompilationFlag flag. Assume 0 if not present. |
- genData.UseDesignTimeCompilationFlag = useTempPEFlag = (int)genKey.GetValue(UseDesignTimeCompilationFlag, 0); |
- this.generatorsMap.Add(progId, genData); |
- } |
- else |
- { |
- GeneratorMetaData genData = this.generatorsMap[progId]; |
- generatesDesignTimeSource = genData.GeneratesDesignTimeSource; |
- //Get the GeneratesSharedDesignTimeSource flag. Assume 0 if not present. |
- generatesSharedDesignTimeSource = genData.GeneratesSharedDesignTimeSource; |
- //Get the UseDesignTimeCompilationFlag flag. Assume 0 if not present. |
- useTempPEFlag = genData.UseDesignTimeCompilationFlag; |
- //Get the CLSID |
- guidGenerator = genData.GeneratorClsid; |
- } |
- |
- return VSConstants.S_OK; |
- } |
- #endregion |
- |
- } |
-} |