# Breaking Changes

> What changes for a WPF project on the way to TX Text Control 34.0: .NET 8 target, license file, removed TXBarcodeControl overloads, renamed files, tagged PDF.

- **Product:** TX Text Control .NET for WPF
- **Section:** Documentation
- **Kind:** Topic
- **Path:** TX Text Control .NET for WPF > Installation Guide > Upgrade Guide > Breaking Changes
- **1670 words**
- **Web URL:** https://docs.textcontrol.com/tx-text-control-dotnet-wpf/installation/upgrading/breaking-changes/
- **LLMs URL:** https://docs.textcontrol.com/tx-text-control-dotnet-wpf/installation/upgrading/breaking-changes/llms.txt
- **LLMs-Full URL:** https://docs.textcontrol.com/tx-text-control-dotnet-wpf/installation/upgrading/breaking-changes/llms-full.txt

---

Upgrading a WPF project to TX Text Control 34.0 rarely touches your XAML or code-behind. What can need work is the project around it: the target framework of the NuGet package, the way the license reaches your assembly, a removed overload of the WPF barcode control and renamed files. Each change is listed with the version that made it and the change your project needs. Start at the section of the version you use today and work up to 34.0: read the entries of every version between yours and the target, since an upgrade from 32.0 to 34.0 includes the changes of 33.0. Some changes, such as the licensing of Service Pack 2 of 32.0, arrived between major versions; [Service Packs](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/whats-new/service-packs/llms-full.txt) lists what each service pack changed.

### At a Glance

| Your project uses | Check |
|---|---|
| 33.0 | No code changes. Test your PDF output, which is now tagged, and PDF/A output, which is now PDF/A-3a. |
| 32.0 | Move the project to .NET 8 or higher, replace calls of the removed `TXBarcodeControl` overloads and follow the new file names. |
| 32.0 before Service Pack 2, on .NET | Replace *licenses.licx* with the license file of the package, and set `EntryAssembly` in libraries. |
| 29.0 or earlier, on the .NET Framework | Write the full assembly version into each *licenses.licx* entry. |

### Version 34.0

- **No changes to existing API.** The update notes of version 34.0 name the [AppendSettings](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/appendsettings/enumeration/llms-full.txt) enumeration without a description, and no other class, property, method or event. It isn't a change: `AppendSettings` and its values `None`, `StartWithNewParagraph` and `StartWithNewSection` have existed since the `Append` methods of `TextControl` were introduced in version 14.0.
- **The same target framework.** The 34.0 package targets .NET 8, like the 33.0 package. A project that uses 33.0 keeps its target framework, and version 34.0 runs on .NET 10 without code changes.
- **Tagged PDF.** PDF documents now contain a logical structure, with headings, paragraphs, tables, text frames and footnotes, stored separately from the visible content for assistive technologies. `StreamType.AdobePDFA` saves PDF/A-3a. If your application validates, compares or post-processes the PDF files it creates, test it with the new output. See [PDF/A](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/pdf/pdf-a/llms-full.txt).
- **Descriptive texts.** The new properties [HypertextLink.DescriptiveText](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/hypertextlink/descriptivetext-property/llms-full.txt), [DocumentLink.DescriptiveText](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/documentlink/descriptivetext-property/llms-full.txt), [FormField.DescriptiveText](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/formfield/descriptivetext-property/llms-full.txt), [Table.DescriptiveText](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/table/descriptivetext-property/llms-full.txt) and [FrameBase.DescriptiveText](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/framebase/descriptivetext-property/llms-full.txt) describe objects in accessible PDF files. Existing code doesn't need them.
- **The toolbox category.** The toolbox items are unchanged, and their category is now **TX Text Control 34.0**.
- **The native library names.** The native libraries of the package are named after the major version, *tx34.dll* and *tx34\_pdf.dll* where 33.0 had *tx33.dll* and *tx33\_pdf.dll*. Installers that list the files by hand have to follow.

### Version 33.0

- **.NET 8 or higher.** The 32.0 packages targeted .NET 5 and, from Service Pack 2, .NET 6. Since 33.0, `TXTextControl.TextControl.WPF.SDK` targets .NET 8. Change the target framework of a project on .NET 6 or .NET 7 to `net8.0-windows` or higher before you install the 33.0 or 34.0 package.
- **Barcode overloads removed.** [TXBarcodeControl.Load](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf-barcode/txbarcodecontrol/load-method/llms-full.txt) and [TXBarcodeControl.Save](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf-barcode/txbarcodecontrol/save-method/llms-full.txt) of the namespace `TXTextControl.WPF.Barcode` lost both overloads that take a `SerializationFormat`. Call one of the remaining overloads: `Load` with a file name, a `Stream`, a `TextReader` or an `XmlReader`, and `Save` with a file name, a `Stream`, a `TextWriter` or an `XmlWriter`.
- **Renamed files.** The package contains *TXSVGResources.dll* where the 32.0 package contained *TXSVGGenerator.dll*. Its native libraries *tx33.dll*, *tx33\_tls.dll* and *tx33\_ic.dll* take the place of *txkernel.dll*, *txtools.dll* and *txic.dll* of the 32.0 package. A project with a package reference needs no change; an installer or a script that lists the files does.

### Version 32.0

- **The license file since Service Pack 2.** .NET projects no longer use the license compiler and *licenses.licx*. The package `TXTextControl.TextControl.WPF.SDK` adds *txtextcontrol.wpf.license*, which the build embeds into your assembly. The update of the package removes *licenses.licx*; check that it is gone, and delete it if it isn't. Existing licenses keep working. .NET Framework projects keep *licenses.licx* as before. See [Development Licenses](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/installation/licensing/development/llms-full.txt).
- **Libraries since Service Pack 2.** TX Text Control can run in a user control library or class library that is called from unlicensed assemblies. The library names itself as the assembly that holds the license with `TextControl.EntryAssembly` or `ServerTextControl.EntryAssembly`, as [User Controls and Class Libraries](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/installation/licensing/application/#user-controls-and-class-libraries) shows.
- **SVG pages.** New overloads of [Page.GetImage](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/page/getimage-method/llms-full.txt) return a page as SVG. Existing calls keep working.

### Version 31.0

No change requires work. The version added support for .NET 5 and .NET 6, and for .NET 7, then a preview, with NuGet packages in the package source **Text Control Offline Packages**, and projects that reference the assemblies directly can move to these packages.

### Version 30.0

Since version 30.0, the setup doesn't register the assemblies in the global assembly cache. In a .NET Framework project, every entry of *licenses.licx* has to name the full assembly version; without it, an older installed version of the assembly can be used and cause a licensing error. [.NET Framework: licenses.licx](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/installation/licensing/development/#net-framework-licenses-licx) shows such an entry. When the license is compiled with *lc.exe*, for example for a build server, each `/i` option names the full path of the assembly. See [Build Servers](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/installation/licensing/build-servers/#net-framework-projects).

[LoadSettings.PDFImportSettings](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/loadsettings/pdfimportsettings-property/llms-full.txt) has been extended with new settings. Existing calls keep working.

### Obsolete Members

A few members of the document engine and of mail merge still work in version 34.0 but are marked obsolete, among them `ListFormat.CharAfterNumber` and `MailMerge.MergeBlocks`. They don't block an upgrade; [Deprecated APIs](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/whats-new/deprecated-apis/#obsolete-members) lists each of them with its replacement. No member of the `TXTextControl.WPF` namespace is obsolete.

### Related Pages

- [Upgrading from Previous Versions](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/installation/upgrading/previous-versions/llms-full.txt): the steps to move a project to version 34.0.
- [Migrating from .NET Framework to .NET](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/installation/upgrading/from-dotnet-framework/llms-full.txt): move a .NET Framework project to .NET 8 or higher.
- [Breaking Changes](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/whats-new/breaking-changes/llms-full.txt) in What's New: the overview by version.
- The blog article [TX Text Control 32.0 SP2 Licensing Changes: Say Goodbye to licenses.licx](https://www.textcontrol.com/blog/2024/01/05/tx-text-control-32-0-sp2-licensing-changes/): the licensing change of Service Pack 2 in detail.

---

## Nearby

- **Previous:** [Migrating From .NET Framework to .NET](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/installation/upgrading/from-dotnet-framework/llms-full.txt)
- **Next:** [Getting Started](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/getting-started/llms-full.txt)
