// The IsEmpty() check ensures that we dont' return a blank <SigningInformation> XElement // when there is no signing information, maintaining parity with the old asset manifest structure public XElement ToXml() => IsEmpty() ? null : new XElement( "SigningInformation", Attributes .ThrowIfMissingAttributes(RequiredAttributes) .CreateXmlAttributes(RequiredAttributes), Enumerable.Concat( FileExtensionSignInfo .OrderBy(fe => fe.Include, StringComparer.OrdinalIgnoreCase) .ThenBy(fe => fe.CertificateName, StringComparer.OrdinalIgnoreCase) .Select(fe => fe.ToXml()), FileSignInfo .OrderBy(f => f.Include, StringComparer.OrdinalIgnoreCase) .ThenBy(f => f.CertificateName, StringComparer.OrdinalIgnoreCase) .Select(f => f.ToXml())) .Concat(CertificatesSignInfo .OrderBy(f => f.Include, StringComparer.OrdinalIgnoreCase) .ThenBy(f => f.DualSigningAllowed, StringComparer.OrdinalIgnoreCase) .Select(f => f.ToXml())) .Concat(ItemsToSign .OrderBy(i => i.Include, StringComparer.OrdinalIgnoreCase) .Select(i => i.ToXml())) .Concat(StrongNameSignInfo .OrderBy(s => s.Include, StringComparer.OrdinalIgnoreCase) .ThenBy(s => s.PublicKeyToken, StringComparer.OrdinalIgnoreCase) .Select(s => s.ToXml())));
// The IsEmpty() check ensures that we dont' return a blank <SigningInformation> XElement // when there is no signing information, maintaining parity with the old asset manifest structure public XElement ToXml() => IsEmpty() ? null : new XElement( "SigningInformation", Enumerable.Concat( FileExtensionSignInfo .OrderBy(fe => fe.Extension, StringComparer.OrdinalIgnoreCase) .ThenBy(fe => fe.CertificateName, StringComparer.OrdinalIgnoreCase) .Select(fe => fe.ToXml()), FileSignInfo .OrderBy(f => f.File, StringComparer.OrdinalIgnoreCase) .ThenBy(f => f.CertificateName, StringComparer.OrdinalIgnoreCase) .Select(f => f.ToXml())) .Concat(ItemsToSign .OrderBy(i => i.File, StringComparer.OrdinalIgnoreCase) .Select(i => i.ToXml())) .Concat(StrongNameSignInfo .OrderBy(s => s.File, StringComparer.OrdinalIgnoreCase) .ThenBy(s => s.PublicKeyToken, StringComparer.OrdinalIgnoreCase) .Select(s => s.ToXml())));