Nemerle.VisualStudio.Project.NemerleProjectNode.CreateFileNode C# (CSharp) Method

CreateFileNode() public method

Create a file node based on an msbuild item.
public CreateFileNode ( ProjectElement item ) : FileNode
item Microsoft.VisualStudio.Project.ProjectElement The msbuild item to be analyzed
return Microsoft.VisualStudio.Project.FileNode
        public override FileNode CreateFileNode(ProjectElement item)
        {
            ErrorHelper.ThrowIsNull(item, "item");

            NemerleFileNode newNode = new NemerleFileNode(this, item, item.IsVirtual);

            string include = item.GetMetadata(ProjectFileConstants.Include);

            var provider = newNode.OleServiceProvider;

            provider.AddService(typeof(EnvDTE.Project), ProjectMgr.GetAutomationObject(), false);
            provider.AddService(typeof(EnvDTE.ProjectItem), newNode.ServiceCreator, false);
            provider.AddService(typeof(VSLangProj.VSProject), this.VSProject, false);

            if (!string.IsNullOrEmpty(include) && Path.GetExtension(include).Equals(".xaml", StringComparison.OrdinalIgnoreCase))
            {
                //Create a DesignerContext for the XAML designer for this file
                newNode.OleServiceProvider.AddService(typeof(DesignerContext), newNode.ServiceCreator, false);
            }

            if (newNode.IsFormSubType)
            {
                newNode.OleServiceProvider.AddService(typeof(DesignerContext), newNode.ServiceCreator, false);
            }

            if (item.ItemName == "Compile") // IsCodeFile(include) &&
                provider.AddService(typeof(SVSMDCodeDomProvider), new NemerleVSMDProvider(newNode), false);

            return newNode;
        }