Nouveautés dans le kit de développement logiciel (SDK) Open XML
[3.0.0] - 2023-11-15
Ajouté
- Les packages peuvent désormais être enregistrés sur .NET Core et .NET 5+ s’ils sont construits avec un chemin ou un flux (#1307).
- Les packages peuvent désormais prendre en charge les URI mal formés (tels que les relations avec un URI tel que
mailto:person@
) - Introduire des comparateurs d’égalité pour
OpenXmlElement
(#1476) IFeatureCollection
peut désormais être énuméré et dispose d’une vue de débogage utile pour voir les fonctionnalités inscrites (#1452)- Ajouter des types mime à la création d’un composant (#1488)
DocumentFormat.OpenXml.Office.PowerPoint.Y2023.M02.Main
Espace de nomsDocumentFormat.OpenXml.Office.PowerPoint.Y2022.M03.Main
Espace de nomsDocumentFormat.OpenXml.Office.SpreadSheetML.Y2021.ExtLinks2021
Espace de noms
Modifié
- Lorsque la validation trouve une partie incorrecte, elle inclut désormais le type de relation plutôt qu’un nom de classe
IDisposableFeature
fait désormais partie du package d’infrastructure et est disponible par défaut sur un package ou un composant.
Changements cassants
- .NET Standard 1.3 n’est plus une plateforme prise en charge. .NET Standard 2.0 est le .NET Standard le plus bas pris en charge.
- L’infrastructure de base est désormais contenue dans un nouveau package DocumentFormat.OpenXml.Framework. Les classes typées sont toujours dans DocumentFormat.OpenXml. Cela signifie que vous pouvez référencer DocumentFormat.OpenXml et compiler les mêmes types, mais si vous souhaitez un package plus petit, vous pouvez vous appuyer uniquement sur le package d’infrastructure.
- Modification du type de
OpenXmlPackage.Package
àDocumentFormat.OpenXml.Packaging.IPackage
au lieu deSystem.IO.Packaging.Package
avec une surface d’API similaire EnumValue<T>
est maintenant utilisé pour boxer un struct plutôt qu’unSystem.Enum
. Cela nous permet d’activer le comportement sur celui-ci sans recourir à la réflexion- Les méthodes sur les parties pour ajouter des parties enfants (c’est-à-dire
AddImagePart
) sont désormais implémentées en tant que méthodes d’extension à partir d’une nouvelle interface de marqueurISupportedRelationship<T>
- Les énumérations d’informations de type de composant (c’est-à-dire
ImagePartType
) ne sont plus un enum, mais une classe statique pour exposer des types de composants connus en tant que structs. Désormais, toute méthode pour définir une nouvelle paire content-type/extension peut être appelée avec le nouveauPartTypeInfo
struct qui contiendra les informations nécessaires. OpenXmlPackage.CanSave
est maintenant une propriété instance (#1307)- Suppression des
OpenXmlSettings.RelationshipErrorHandlerFactory
types associés et remplacement par un mécanisme intégré pour permettre cette opération IdPartPair
est maintenant un struct en lecture seule plutôt qu’une classePartExtensionProvider
Renommé enIPartExtensionFeature
et réduit sa surface d’exposition à seulement deux méthodes (au lieu d’un completDictionary<,>
). La propriété permettant d’accéder à ce hors deOpenXmlPackage
a été supprimée, mais peut être accessible viaFeatures.Get<IPartExtensionFeature>()
si nécessaire.OpenXmlPart
/OpenXmlContainer
/OpenXmlPackage
et les types dérivés ont désormais des constructeurs internes (ceux-ci avaient des méthodes abstraites internes, de sorte qu’ils n’étaient probablement pas sous-classés en externe)OpenXmlElementList
est désormais un struct qui implémenteIEnumerable<OpenXmlElement>
etIReadOnlyList<OpenXmlElement>
le cas échéant (#1429)- Les implémentations individuelles de
OpenXmlPartReader
sont désormais disponibles pour chaque type de package (c’est-à-direWordprocessingDocumentPartReader
,SpreadsheetDocumentPartReader
,PresentationDocumentPartReader
), et la précédenteTypedOpenXmlPartReader
a été supprimée. (#1403) - Réduction des frameworks cibles inutiles pour les packages en plus de DocumentFormat.OpenXml.Framework (#1471)
- Modification de certains problèmes d’orthographe pour les noms de propriétés (#1463, #1444)
Model3D
représente maintenant le nomam3d.model3d
de balise d’élément xml modifié (Précédemmentam3d.model3D
)- Enlevé
DocumentFormat.OpenXml.Office.SpreadSheetML.Y2022.PivotRichData.PivotCacheHasRichValuePivotCacheRichInfo
- Enlevé
DocumentFormat.OpenXml.Office.SpreadSheetML.Y2022.PivotRichData.RichDataPivotCacheGuid
- Supprimé inutilisé
SchemaAttrAttribute
(#1316) - Supprimé inutilisé
ChildElementInfoAttribute
(#1316) OpenXmlSimpleType.TextValue
Supprimé. Cette propriété n’a jamais été conçue pour être utilisée en externe (#1316)- Suppression de la logique de validation obsolète de la version 1 du Kit de développement logiciel (SDK) (#1316)
- Suppression des méthodes obsolètes de 2.x (#1316)
- Suppression des propriétés mutables sur OpenXmlAttribute et marquées comme
readonly
(#1282) - Supprimé
OpenXmlPackage.Close
en faveur deDispose
(#1373) - Supprimé
OpenXmlPackage.SaveAs
en faveur deClone
(#1376)
[2.20.0] - 2023-04-05
Ajouté
- Ajout de l’espace de noms DocumentFormat.OpenXml.Office.Drawing.Y2022.ImageFormula ajouté
- Ajout de DocumentFormat.OpenXml.Office. Word. Y2023. Espace de noms WordML.Word16DU
Modifié
- Marqué
OpenXmlSimpleType.TextValue
comme obsolète. Cette propriété n’a jamais été conçue pour être utilisée en externe (#1284) - Marqué
OpenXmlPackage.Package
comme obsolète. Il s’agit d’un détail d’implémentation dans les versions ultérieures et ne sera pas accessible (#1306) - Marqué
OpenXmlPackage.Close
comme obsolète. Cela sera supprimé dans une version ultérieure, utilisez Dispose à la place (#1371) - Marqué
OpenXmlPackage.SaveAs
comme obsolète, car il sera supprimé dans une version ultérieure (#1378)
Fixed
- Correction d’extensions de fichier incorrectes pour les fichiers vbaProject (#1292)
- Correction d’extensions de fichier incorrectes pour ImagePart (#1305)
- Correction d’une casse incorrecte pour customXml (#1351)
- Correction de AddEmbeddedPackagePart pour autoriser les extensions correctes pour différents types de contenu (#1388)
[2.19.0] - 2022-12-14
Ajouté
- Cible .NET 6 avec prise en charge de la suppression (#1243, #1240)
- Ajout de l’espace de noms DocumentFormat.OpenXml.Office.SpreadSheetML.Y2022.PivotRichData ajouté
- Ajout de l’espace de noms DocumentFormat.OpenXml.Office.PowerPoint.Y2019.Main.Command
- Ajout de l’espace de noms DocumentFormat.OpenXml.Office.PowerPoint.Y2022.Main.Command
- Ajout de RichDataPivotCacheGuid enfant à DocumentFormat.OpenXml.Office2010.Excel.PivotCacheDefinition
Fixed
- Suppression de l’utilisation de la réflexion si possible (#1240)
- Correction d’un problème où certains URI pouvaient être modifiés lors du clonage ou de la création d’une copie (#1234)
- Correction d’un problème dans la génération FlatOpc qui ne lisait pas le flux complet sur .NET 6+ (#1232)
- Correction d’un problème où les relations restaurées ne se chargent pas correctement (#1207)
[2.18.0] 2022-09-06
Ajouté
- Ajout de l’espace de noms DocumentFormat.OpenXml.Office.SpreadSheetML.Y2021.ExtLinks2021 (#1196)
- Ajout de l’attribut durableId à DocumentFormat.OpenXml.Wordprocessing.NumberingPictureBullet (#1196)
- Ajout de quelques classes de base pour les éléments typés, les parties et les packages (#1185)
Modifié
- Ajustement des LICENSE.md pour se conformer aux exigences de .NET Foundation (#1194)
- Modifications diverses pour améliorer les performances des services internes
[2.17.1] - 2022-06-28
Supprimé
- Suppression de l’espace de noms d’aperçu DocumentFormat.OpenXml.Office.Comments.Y2020.Reactions, car cet espace de noms crée actuellement des documents non valides.
Fixed
- Restauration de la relation PowerPointCommentPart à PresentationPart.
Deprecated
- La relation entre PowerPointCommentPart et PresentationPart est déconseillée et sera supprimée dans une version ultérieure.
[2.17.0] - Inédit
Ajouté
- Ajout de l’espace de noms DocumentFormat.OpenXml.Office.Comments.Y2020.Reactions (#1151)
- Ajout de l’espace de noms DocumentFormat.OpenXml.Office.SpreadSheetML.Y2022.PivotVersionInfo (#1151)
Fixed
- Déplacement de la relation PowerPointCommentPart vers SlidePart (#1137)
Mis à jour
- Suppression des analyseurs d’API publics en faveur d’EnablePackageValidation (#1154)
[2.16.0] - 2022-03-14
Ajouté
- Ajout de la méthode
OpenXmlPart.UnloadRootElement
qui décharge l’élément racine s’il est chargé (#1126)
Mis à jour
- La génération de code de schéma a été déplacée vers le projet sdk à l’aide de générateurs de code C#
[2.15.0] - 2021-12-16
Ajouté
- Ajout d’exemples pour les classes fortement typées et Linq-to-XML dans le
./samples
répertoire (#1101, #1087) - Expédition de bibliothèques supplémentaires pour certaines fonctionnalités supplémentaires dans
DocumentFormat.OpenXml.Features
etDocumentFormat.OpenXml.Linq
. Pour plus d’informations, consultez la documentation du référentiel. - Ajout de la méthode d’extension pour prendre en charge l’obtention du type de composant image (#1082)
- Ajout de classes générées et
FileFormatVersions.Microsoft365
pour les nouveaux types et contraintes de modèle d’abonnement (#1097).
Fixed
- Correction du problème lié au type
model/gltf.binary
mime modifié (#1069) - DocumentFormat.OpenXml.Office.Drawing.ShapeTree est désormais disponible uniquement dans Office 2010 et versions ultérieures, et non dans la version 2007.
- Sérialiser correctement les
new CellValue(bool)
valeurs (#1070) - Mise à jour des espaces de noms connus à générer via un générateur de source dans le dépôt (#1092)
- Quelques problèmes de documentation autour de
FileFormatVersions
l’énumération
[2.14.0] - 2021-10-28
Ajouté
- Ajout de classes générées pour les types et contraintes Office 2021 (#1030)
- Ajout
Features
de la propriété àOpenXmlPartContainer
etOpenXmlElement
pour activer un stockage d’état par partie ou par document - Ajout de constructeurs publics pour
XmlPath
(#1013) - Ajout de parties pour les types de données enrichies (#1002)
- Ajout de méthodes pour générer des ID de paragraphe uniques (#1000)
[2.13.1] - 2021-08-17
Fixed
- Correction de certaines annotations nullabilité qui étaient incorrectement définies (#953, #955)
- Correction d’un problème qui supprimerait un
TextReader
lors de la création d’unXmlReader
dans certaines circonstances (#940) - Correction d’un type de documentation (#937)
- Correction d’un problème lié à l’ajout d’enfants supplémentaires à des parties de données (#934)
- Remplacement de certaines entrées de documentation qui étaient des valeurs génériques par des commentaires utiles (#992)
- Correction d’une régression dans AddDataPartRelationship (#954)
[2.13.0] - 2021-05-13
Ajouté
- Types O19 supplémentaires pour correspondre aux spécifications Open (#916)
- Ajout de classes générées pour les types et contraintes Office 2019 (#882)
- Ajout d’attributs nullability (#840, #849)
- Ajout d’une surcharge pour
OpenXmlPartReader
etOpenXmlReader.Create(...)
pour ignorer l’espace blanc (#857) - Ajout
HexBinaryValue.TryGetBytes(...)
de etHexBinaryValue.Create(byte[])
pour gérer l’encodage et le décodage des octets (#867) - Implémenté
IEquatable<IdPartPair>
surIdPartPair
pour corriger l’implémentation de l’égalité et les setters obsolètes (#871)
Fixed
- Correction de la sérialisation des
CellValue
constructeurs pour utiliser des cultures invariantes (#903) - Correction de l’analyse pour autoriser les exposants pour les valeurs de cellule numériques (#901)
- Correction d’un goulot d’étranglement massif des performances en
UniqueAttributeValueConstraint
cas d’implication (#924)
Deprecated
- Office2013 déprécié. Word. Propriété Person.Contact. Il ne persiste plus et sera supprimé dans une version ultérieure (#912)
[2.12.3] - 2021-02-24
Fixed
- Correction d’un problème de
CellValue
validation incorrecte pour les valeurs booléennes (#890)
[2.12.2] - 2021-02-16
Fixed
- Correction du problème où
OpenSettings.RelationshipErrorHandlerFactory
crée du code XML non valide si l’URI obtenu est plus petit que l’entrée (#883)
[2.12.1] - 2021-01-11
Fixed
- Correction d’un bogue dans lequel les propriétés sur
OpenXmlCompositeElement
les instances ne pouvaient pas être définies sur Null pour supprimer l’élément (#850) - Correction
OpenXmlElement.RawOuterXml
pour définir correctement les valeurs null sans lever (#818) - Autoriser la réécriture de tous les URI mal formés, quelle que soit la valeur cible (#835)
[2.12.0] - 2020-12-09
Ajouté
- Ajout
OpenSettings.RelationshipErrorHandlerFactory
pour fournir un moyen de gérer les URI qui interrompent l’analyse des documents avec des liens mal formés (#793) - Ajout
OpenXmlCompositeElement.AddChild(OpenXmlElement)
pour ajouter des enfants dans l’ordre correct par schéma (#774) - Ajout
SmartTagClean
de etSmartTagId
à la place deSmtClean
etSmtId
(#747) - Ajout
OpenXmlValidator.Validate(..., CancellationToken)
de remplacements pour faciliter l’annulation de la validation de longue durée sur .NET 4.0+ (#773) - Ajout de surcharges pour
CellValue
prendredecimal
,double
etint
, ainsi que des méthodes pratiques pour les analyser (#782) - Ajout de la validation pour les
CellType
formats de nombres et de dates (#782) - Ajout
OpenXmlReader.GetLineInfo()
pour récupérerIXmlLineInfo
le lecteur sous-jacent si disponible (#804)
Fixed
- Correction d’une exception qui serait levée en cas de tentative d’enregistrement d’un document en tant que FlatOPC s’il contient des fichiers SVG (#822)
- Ajout
SchemaAttrAttribute
d’attributs pour la compatibilité descendante (#825)
Supprimé
- Suppression de la référence explicite à
System.IO.Packaging
sur les builds .NET 4.6 (#774)
[2.11.3] - 2020-07-17
Fixed
- Correction d’un goulot d’étranglement massif des performances quand
IndexReferenceConstraint
etReferenceExistConstraint
sont impliqués (#763) - Correction de
CellValue
n’inclure que trois chiffres les plus marquants sur les deuxièmes fractions pour corriger les dates de chargement du problème (#741) - Correction de quelques erreurs d’indexation de validation susceptibles de provoquer des erreurs de validation erronées (#767)
- Mise à jour du système de validation interne pour ne pas utiliser la récursivité, ce qui permet un meilleur court-circuit (#766)
[2.11.2] - 2020-07-10
Fixed
- Correction d’un lien source rompu (#749)
- Vérification que la compilation est déterministe (#749)
- Fichier supplémentaire supprimé dans le package NuGet (#749)
[2.11.1] - 2020-07-10
Fixed
- Vérifier que les builds du .NET Framework passent PEVerify (#744)
OpenXmlPartContainer.DeletePart
ne lève plus d’exception s’il n’y a pas de correspondance pour l’identificateur donné (#740)- Marquer les membres obsolètes pour qu’ils ne s’affichent pas avec IntelliSense (#745)
- Correction d’un problème de
AttributeRequiredConditionToValue
contrainte sémantique dans lequel la validation pouvait échouer en cas d’entrée correcte (#746)
[2.11.0] - 2020-05-21
Ajouté
- Ajout
FileFormatVersions.2019
de l’énumération (#695) - Ajout d’éléments
ChartSpace
de graphique et pour les nouveaux espaces de noms 2016. Cela permet de connecter des éléments pour créer un composant de graphique avec des styles de graphique comme « Sunburst » (#687). - Ajout
OpenXmlElementFunctionalExtensions.With(...)
de méthodes d’extension, qui offrent des moyens flexibles pour construire desOpenXmlElement
instances dans le contexte de transformations fonctionnelles pures (#679) - Ajout des versions minimales d’Office pour les types et valeurs enum (#707)
- Ajout de valeurs supplémentaires
CompatSettingNameValues
:UseWord2013TrackBottomHyphenation
,AllowHyphenationAtTrackBottom
etAllowTextAfterFloatingTableBreak
(#706) - Ajout de gfxdata attribue aux types complexes de formes Arc, Curve, Line, PolyLine, Group, Image, Ovale, Rect et RoundRect par MS-OI29500 2.1.1783-1799 (#709)
- Ajout
OpenXmlPartContainer.TryGetPartById
pour activer la récupération de composants enfants sans exception s’il n’existe pas (#714) - Ajout
OpenXmlPackage.StrictRelationshipFound
de la propriété qui indique si ce package contient des relations transitionnelles converties à partir de Strict (#716)
Fixed
- Les parties dérivées personnalisées n’ont pas hérité de parties connues de leur parent, ce qui a provoqué un échec lors de l’ajout de parties (#722)
Modifié
- Les setters de propriété marqués dans
OpenXmlAttribute
comme obsolètes comme structs ne doivent pas avoir l’état mutable (#698)
[2.10.1] - 2020-02-28
Fixed
- Garantie que les attributs sont disponibles quand
OpenXmlElement
est initialisé avec du code XML externe (#684, #692) - Erreurs de documentation (#681)
- Suppression de l’état qui rendait non-thread sécurisé la validation des éléments dans certaines conditions (#686)
- Insère correctement les éléments fortement typés avant les éléments connus qui ne sont pas fortement typés (#690)
[2.10.0] - 2020-01-10
Ajouté
- Ajout de la prise en charge initiale d’Office 2016, y compris
FileFormatVersion.Office2016
,ExtendedChartPart
et d’autres nouveaux éléments de schéma (#586) - Ajout de la cible .NET Standard 2.0 (#587)
- Prise en charge des symboles inclus pour le débogage (#650)
IXmlNamespaceResolver
Exposé à partir deXmlPath
au lieu d’une liste de chaînes mise en forme pour exposer le mappage d’espaces de noms/préfixes (#536)- Implémenté
IComparable<T>
etIEquatable<T>
activéOpenXmlComparableSimpleValue
pour autoriser les comparaisons sans boxing (#550) - Ajouté
OpenXmlPackage.RootPart
pour accéder facilement à la partie racine sur n’importe quel package (#661)
Modifié
- Mise à jour vers la version 4.7.0 de System.IO.Packaging, qui apporte un certain nombre de correctifs de performances (#660)
- Données consolidées pour les enfants/propriétés des éléments afin de réduire la duplication (#540, #547, #548)
- Remplacement des données binaires opaques pour les contraintes enfants d’éléments par un modèle déclaratif (#603)
- Un certain nombre de correctifs de performances pour réduire les allocations si possible
- Réduction de la taille de 20 % de 5,5 Mo à 4,3 Mo
- Le sous-système de validation a subi une refonte radicale. Cela peut entraîner des modifications dans les erreurs signalées.
Fixed
- Correction de certaines incohérences dans la documentation (#582)
- Correction
ToFlatOpcDocument
de ,ToFlatOpcString
,FromFlatOpcDocument
, etFromFlatOpcString
pour traiter correctement les composants d’importation de format alternatif, ou « altChunk parts » (#659)
[2.9.1] - 2019-03-13
Modifié
- Ajout d’une solution de contournement pour un problème de compilateur .NET Native qui ne prend pas en charge l’appel
Marshal.SizeOf<T>
avec un struct qui contient des propriétés implémentées automatiquement (#569) - Correction d’une erreur de documentation (#528)
[2.9.0] - 2018-06-08
Ajouté
ListValue
implémenteIEnumerable<T>
maintenant (#385)- Ajout d’une
WebExtension.Frozen
propriété mal orthographiéFronzen
et obsolète (#460) - Ajout d’une
OpenXmlPackage.CanSave
propriété qui indique si une plateforme prend en charge l’enregistrement sans fermer le package (#468) - Les types simples (sauf
EnumValue
etListValue
) implémententIComparable<T>
désormais etIEquatable<T>
(#487)
Modifié
- Suppression de l’état qui a été transporté dans les validateurs qui conserveraient les packages lorsqu’ils n’étaient pas utilisés (#390)
EnumSimpleType
L’analyse a été améliorée et utilise moins d’allocations et de caches pour une utilisation ultérieure (#408)- Correction d’un certain nombre de fautes d’orthographe dans la documentation (#462)
- Lors de l’appel
OpenXmlPackage.Save
sur .NET Framework, le package est désormais vidé dans le flux (#468) - Correction de la condition de concurrence lors de la traduction stricte des attributs (#480)
- Les données de schéma pour la validation utilisent un format plus compact, ce qui entraîne une réduction de la taille de dll et des améliorations des performances pour le chargement (#482, #483)
- Un certain nombre d’API sont marquées comme obsolètes, car elles ont des solutions de contournement simples et seront supprimées lors de la prochaine modification majeure
- Correction de certaines valeurs de contrainte pour la validation qui contenaient Office 2007, même lorsqu’elle était uniquement prise en charge dans les versions ultérieures
- Mise à jour
System.IO.Packaging
vers la version 4.5.0 qui résout certains problèmes sur les plateformes Xamarin et réduit les dépendances vis-à-vis du .NET Framework
[2.8.1] - 2018-01-03
Modifié
- Référence de fichier de licence de package corrigée pour afficher la licence MIT mise à jour
[2.8.0] - 2017-12-28
Ajouté
- Directive runtime par défaut pour une meilleure prise en charge .NET Native.
Modifié
- Correction de l’enregistrement des parties à encoder avec UTF8, mais sans marque d’ordre d’octet. Cela a provoqué l’impossibilité pour certains renderers d’ouvrir le document généré.
- Correction des exceptions levées lorsque des erreurs sont rencontrées lors de l’ouverture des packages pour être cohérents entre les plateformes.
- Correction du problème sur les plateformes Mono utilisant le package NuGet System.IO.Packaging (Xamarin, etc.) lors de la création d’un document.
- Correction de l’enregistrement manuel d’un package lorsque l’enregistrement automatique a la valeur false.
- Correction des données de contrainte de schéma et de la sérialisation standardisée entre les plateformes.
- Mise à niveau vers
System.IO.Packaging
la version 4.4.0 qui corrige une certaine cohérence avec .NET Framework dans les packages d’ouverture.
[2.7.2] - 2017-06-06
Ajouté
- Package prend désormais en charge .NET 3.5 et .NET 4.0 en plus de .NET Standard 1.3 et .NET Framework 4.6
Modifié
- Correction d’un problème où la version de l’assembly n’était pas définie dans l’assembly.
[2.7.1] - 2017-01-31
Modifié
- Correction d’un incident lorsque la validation est appelée sur .NET Framework avec un nommage fort appliqué.
[2.7.0] - 2017-01-24
Ajouté
- Le SDK prend désormais en charge .NET Standard 1.3
Modifié
- Déplacé vers l’utilisation de System.IO.Packaging à partir de dotnet/corefx pour .NET Standard 1.3 et WindowsBase pour .NET 4.5.
- Nettoyage du système de build de projet pour utiliser l’interface CLI .NET.
[2.6.1] - 2016-01-15
Ajouté
- Ajout de centaines de tests XUnit. Il y a maintenant un total de 1 333 tests. Ils mettent environ 20 minutes à courir, alors soyez patient.
[2.6.0] - 2015-06-29
Ajouté
- Incorporé un remplacement
System.IO.Packaging
qui corrige certains bogues graves (mais exceptionnels) trouvés dans l’implémentation de WindowsBase