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;
}