Bari.Plugins.VsCore.VisualStudio.ProjectSections.SourceItemsSectionBase.Write C# (CSharp) Method

Write() public method

Writes the section using an XML writer
public Write ( XmlWriter writer, Project project, IMSBuildProjectGeneratorContext context ) : void
writer System.Xml.XmlWriter XML writer to use
project Project The project to generate .csproj for
context IMSBuildProjectGeneratorContext Current .csproj generation context
return void
        public override void Write(XmlWriter writer, Project project, IMSBuildProjectGeneratorContext context)
        {
            writer.WriteStartElement("ItemGroup");

            var orderedFiles = GetOrderedFiles(project);

            foreach (var pair in orderedFiles)
            {
                var file = pair.Item1;
                var sourceSetType = pair.Item2;

                var relativePath = ToProjectRelativePath(project, file, ProjectSourceSetName);
                var logicalPath = GetLogicalPath(project, file, sourceSetType);

                // We have to skip .csproj files, which are generated by bari to the source set because otherwise
                // VisualStudio does not work as expected:
                if (!IgnoredExtensions.Any(ext => relativePath.EndsWith(ext, StringComparison.InvariantCultureIgnoreCase)))
                {
                    writer.WriteStartElement(GetElementNameFor(project, file));
                    writer.WriteAttributeString("Include", relativePath);

                    if (ProjectSourceSetName != sourceSetType)
                        writer.WriteElementString("LogicalName", logicalPath);

                    WriteAdditionalOptions(writer, project, file);

                    writer.WriteEndElement();
                }
            }
            writer.WriteEndElement();
        }