Skip to content

[3.0.0-beta1]

Pre-release
Pre-release
Compare
Choose a tag to compare
@mikeebowen mikeebowen released this 21 Apr 17:35
· 193 commits to main since this release
c27e4c0

Added

  • Packages can now be saved on .NET Core and .NET 5+ if constructed with a path or stream (#1307).
  • Packages can now support malformed URIs (such as relationships with a URI such as mailto:person@)

Changed

  • When validation finds incorrect part, it will now include the relationship type rather than a class name

Removed

  • .NET Standard 1.3 is no longer a supported platform. .NET Standard 2.0 is the lowest .NET Standard supported.
  • Removed unused SchemaAttrAttribute
  • Removed unused ChildElementInfoAttribute
  • Removed OpenXmlSimpleType.TextValue. This property was never meant to be used externally
  • Removed obsolete validation logic from v1 of the SDK
  • Removed obsoleted methods from 2.x
  • Removed mutable properties on OpenXmlAttribute and marked as readonly
  • Removed OpenXmlPackage.Close in favor of Dispose (#1373)
  • Removed OpenXmlPackage.SaveAs in favor of Clone (#1376)
  • Removed OpenXmlPackage.Package property. A OpenXmlPackage is now backed by an internal (for now) type IPackage instead of System.IO.Packaging.Package

Breaking change

  • Core infrastructure is now contained in a new package DocumentFormat.OpenXml.Framework. Typed classes are still in DocumentFormat.OpenXml. This means that you may reference DocumentFormat.OpenXml and still compile the same types, but if you want a smaller package, you may rely on just the framework package.
  • EnumValue<T> now is used to box a struct rather than a System.Enum. This allows us to enable behavior on it without resorting to reflection
  • Methods on parts to add child parts (i.e. AddImagePart) are now implemented as extension methods off of a new marker interface ISupportedRelationship<T>
  • Part type info enums (i.e. ImagePartType) is no longer an enum, but a static class to expose well-known part types as structs. Now any method to define a new content-type/extension pair can be called with the new PartTypeInfo struct that will contain the necessary information.
  • OpenXmlPackage.CanSave is now an instance property (#1307)
  • Removed OpenXmlSettings.RelationshipErrorHandlerFactory and associated types and replaced with a built-in mechanism to enable this
  • IdPartPair is now a readonly struct rather than a class
  • IDisposableFeature is now a part of the framework package and is available by default on a package or part.
  • Renamed PartExtensionProvider to IPartExtensionFeature and reduced its surface area to only two methods (instead of a full Dictionary<,>). The property to access this off of OpenXmlPackage has been removed, but may be accessed via Features.Get<IPartExtensionFeature>() if needed.
  • OpenXmlPart/OpenXmlContainer/OpenXmlPackage and derived types now have internal constructors (these had internal abstract methods so most likely weren't subclassed externally)