Пример #1
0
        private string CreateValidIdentifier(IVsHierarchy hierarchy, string originalFileName)
        {
            CodeDomProvider      codeDomProvider = null;
            IVSMDCodeDomProvider service         = base.GetService(typeof(SVSMDCodeDomProvider)) as IVSMDCodeDomProvider;

            if (service != null)
            {
                codeDomProvider = (CodeDomProvider)service.CodeDomProvider;
            }
            if (codeDomProvider == null)
            {
                string kind = ToDteProject(hierarchy).Kind;
                if (StringComparer.OrdinalIgnoreCase.Compare("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}", kind) == 0)
                {
                    codeDomProvider = new CSharpCodeProvider();
                }
                else
                {
                    codeDomProvider = new VBCodeProvider();
                }
            }
            if (codeDomProvider != null)
            {
                return(codeDomProvider.CreateValidIdentifier(originalFileName));
            }
            return(originalFileName);
        }
        /// <include file='doc\VSDesignerLoader.uex' path='docs/doc[@for="VSDesignerLoader.CreateCodeLoader"]/*' />
        /// <devdoc>
        ///     Called to create the MCM loader.
        /// </devdoc>
        protected override CodeLoader CreateCodeLoader(TextBuffer buffer, IDesignerLoaderHost host)
        {
            CodeLoader loader = null;

            // Get the context object off of the hierarchy, and ask it for an IVSMDCodeDomProvider
            // instance.
            //
            IVsHierarchy hier = Hierarchy;

            if (hier is IVsProject)
            {
                NativeMethods.IOleServiceProvider oleProvider = (NativeMethods.IOleServiceProvider)((IVsProject)hier).GetItemContext(ItemId);

                if (oleProvider != null)
                {
                    ServiceProvider      contextProv     = new ServiceProvider(oleProvider);
                    IVSMDCodeDomProvider codeDomProvider = (IVSMDCodeDomProvider)contextProv.GetService(typeof(IVSMDCodeDomProvider));
                    if (codeDomProvider != null)
                    {
                        loader = new VsCodeDomLoader(this, hier, ItemId, (CodeDomProvider)codeDomProvider.CodeDomProvider, buffer, host);
                    }
                }
            }

            if (loader == null)
            {
                throw new NotSupportedException(SR.GetString(SR.DESIGNERLOADERNoLanguageSupport));
            }

            return(loader);
        }
        /// <summary>
        /// This method will get the CodeDomDocDataAdapter corresponding to the active XAML file in
        /// the designer.
        /// </summary>
        /// <returns>The CodeDomDocDataAdapter for the .py file that corresponds to the active xaml file</returns>
        public CodeDomDocDataAdapter GetDocDataAdapterForPyFile()
        {
            IVSMDCodeDomProvider codeDom = (new ServiceProvider(pyFile.OleServiceProvider, true)).GetService(typeof(SVSMDCodeDomProvider)) as IVSMDCodeDomProvider;
            DocData data = new DocData((project as PythonProjectNode).ProjectMgr.Site, pyFile.Url);
            CodeDomDocDataAdapter cdDocDataAdapter = new CodeDomDocDataAdapter((project as PythonProjectNode).ProjectMgr.Site, data);

            return(cdDocDataAdapter);
        }
Пример #4
0
		///-------------------------------------------------------------------------------------------------------------
		/// <summary>
		///	 Create CodeDomProvider for the language of the file
		/// </summary>
		///-------------------------------------------------------------------------------------------------------------
		protected virtual CodeDomProvider CreateCodeDomProvider(uint itemid)
		{
			Microsoft.VisualStudio.OLE.Interop.IServiceProvider oleServiceProvider;
			ErrorHandler.ThrowOnFailure(((IVsProject)this._hierarchy).GetItemContext(itemid, out oleServiceProvider));
			ServiceProvider serviceProvider = new ServiceProvider(oleServiceProvider);
			IVSMDCodeDomProvider provider = serviceProvider.GetService(typeof(SVSMDCodeDomProvider)) as IVSMDCodeDomProvider;
			CodeDomProvider codeDomProvider = null;
			if (provider != null)
			{
				codeDomProvider = provider.CodeDomProvider as CodeDomProvider;
			}

			Debug.Assert(codeDomProvider!=null, "Failed to create CodeDomProvider");
			return codeDomProvider;
		}
 protected virtual CodeDomProvider GetCodeProvider()
 {
     if (codeDomProvider == null)
     {
         IVSMDCodeDomProvider provider = GetService(typeof(SVSMDCodeDomProvider))
                                         as IVSMDCodeDomProvider;
         if (provider != null)
         {
             codeDomProvider = provider.CodeDomProvider as CodeDomProvider;
         }
         else
         {
             codeDomProvider = CodeDomProvider.CreateProvider("C#");
         }
     }
     return(codeDomProvider);
 }
Пример #6
0
 /// <summary>
 /// Returns a CodeDomProvider object for the language of the project containing
 /// the project item the generator was called on
 /// </summary>
 /// <returns>A CodeDomProvider object</returns>
 protected virtual CodeDomProvider GetCodeProvider()
 {
     if (codeDomProvider == null)
     {
         //Query for IVSMDCodeDomProvider/SVSMDCodeDomProvider for this project type
         IVSMDCodeDomProvider provider = GetService(typeof(SVSMDCodeDomProvider)) as IVSMDCodeDomProvider;
         if (provider != null)
         {
             codeDomProvider = provider.CodeDomProvider as CodeDomProvider;
         }
         else
         {
             //In the case where no language specific CodeDom is available, fall back to C#
             codeDomProvider = CodeDomProvider.CreateProvider("C#");
         }
     }
     return(codeDomProvider);
 }
 /// <summary>
 /// Returns a CodeDomProvider object for the language of the project containing
 /// the project item the generator was called on
 /// </summary>
 /// <returns>A CodeDomProvider object</returns>
 protected virtual CodeDomProvider GetCodeProvider()
 {
     if (codeDomProvider == null)
     {
         //Query for IVSMDCodeDomProvider/SVSMDCodeDomProvider for this project type
         IVSMDCodeDomProvider provider = GetService(typeof(Microsoft.VisualStudio.Shell.Interop.SVSMDCodeDomProvider)) as IVSMDCodeDomProvider;
         if (provider != null)
         {
             codeDomProvider = provider.CodeDomProvider as CodeDomProvider;
         }
         else
         {
             //In the case where no language specific CodeDom is available, fall back to CSharp
             codeDomProvider = CodeDomProvider.CreateProvider("CSharp");
         }
     }
     return(codeDomProvider);
 }
Пример #8
0
        private CodeDomProvider GetCodeDomProvider()
        {
            if (_fileNode is NemerleFileNode)
            {
                return(((NemerleFileNode)_fileNode).CodeDomProvider);
            }
            else
            {
                // более универсальный способ получить CodeDomProvider. Скопирован из примера интеграции IronPython
                using (ServiceProvider sp = new ServiceProvider(_fileNode.OleServiceProvider))
                {
                    IVSMDCodeDomProvider smdProvider = sp.GetService(typeof(Microsoft.VisualStudio.Shell.Interop.SVSMDCodeDomProvider)) as IVSMDCodeDomProvider;

                    if (null == smdProvider)
                    {
                        return(null);
                    }

                    return(smdProvider.CodeDomProvider as CodeDomProvider);
                }
            }
        }