Breaking Changes
Upgrading TX Text Control .NET Server to a new major version can require changes to code, project settings or packages. Listed per version, these changes let you estimate the work involved before you start.
For the new features of each version, see What's New. The What's New section also has a Breaking Changes page.
How to Use This List
- Read the entries of every version between your current version and your target version, not only those of the target version. An upgrade from 32.0 to 34.0 includes the changes of 33.0.
- Each version starts with its Update Notes, the table of changes to existing classes, properties, methods and events from the What's New documentation of that version. The other entries describe changes to packages, project setup, the Document Editor backend and the frontend packages that Text Control announced for the version.
- Some changes arrived with a service pack or a web package version. They are listed under the major version they belong to.
- Once your code compiles, test the application. The entries under "Behavior Changes to Test" don't break the build, but they can change what your application produces.
Version 34.0
TX Text Control 34.0 was released in November 2025.
Update Notes
The Update Notes table of version 34.0 has a single empty row, so no changes to existing classes, properties, methods or events are listed. Some renderings of the table show the AppendSettings enumeration without a description in that row. It isn't a change: AppendSettings and its values None, StartWithNewParagraph and StartWithNewSection have existed since the Append methods were introduced in version 14.0.
.NET Versions
The 34.0 packages support .NET 8, .NET 9 and .NET 10. A project that already uses the 33.0 NuGet packages doesn't need a new target framework. Text Control tested 34.0 with .NET 10 and found that existing TX Text Control APIs work without code changes.
Packages
- Text Control Private NuGet Feed. Since February 2026, licensed developers can install the packages from the private feed at
https://www.textcontrol.com/nuget/v3/index.json. The license is injected into the package on the server before the download. The Text Control Offline Packages source of the developer installation remains available. See Migrating from Previous Versions to switch. - Document Editor backend package. The package
TXTextControl.Web.DocumentEditor.Backend(versions 34.1.0 to 34.5.0 on the private feed) contains the backend workerTXTextControl.Web.Server.Coreand the hosted serviceDocumentEditorWorkerManagerthat starts and stops it. It copies the worker files to the build and publish output, so you no longer add these files to your project manually. The package depends on the Core engine: installTXTextControl.TextControl.Core.SDKas well. Applications built with the 33.0 tutorials can replace their own hosted service with this package, as described in Migrating from Previous Versions. - Two Document Viewer packages. The 34.x package set contains
TXTextControl.Web.DocumentViewerandTXTextControl.Web.DocumentViewer.Classic(first version 34.0.0). Their READMEs list the matching assemblies as dependencies:TXTextControl.Core.dll,TXTextControl.Server.Core.dllandTXDocumentServer.Core.dllfor the Document Viewer package, andTXTextControl.dll,TXTextControl.Server.dllandTXDocumentServer.dllfor the Classic package. Choose the viewer package that matches the SDK package of your project.
Frontend Packages
@txtextcontrol/tx-react-document-editor34.0.0 requires React^19.2.0as a peer dependency.@txtextcontrol/tx-ng-document-editor34.0.0 requires Angular>=18.2.14 <=21.
See Updating npm Packages for the complete list.
Behavior Changes to Test
- Document Editor on the Core engine. All built-in dialog boxes are now available in the Linux-based Document Editor. Its ribbons and context menus have been changed and now have the same functionality as the Windows-based Document Editor. If you customize the ribbon or the context menus, test your customizations.
- PDF output. PDF documents exported with 34.0 include the tags and metadata for PDF/UA compliance by default, and documents saved as PDF/A are saved as PDF/A-3a. If you compare or validate the PDF documents your application creates, check the results.
- RTF and EMF on the Core engine. The Core engine now loads and saves RTF documents and supports EMF images, on Linux and Windows. Before 34.0, these capabilities were only available in the Windows-only Classic engine.
- Document Editor backend port. In 34.x,
TXTextControl.Web.Server.Corelistens on TCP port 4283 by default, andUseTXWebSocketMiddleware()without parameters connects to that port; in 33.0, both used port 4282. The parameterless setup keeps working because both defaults changed together. If your 33.0 application names port 4282 explicitly, for example for a backend that runs separately, in a container or behind a firewall rule, change it to 4283 or configure the same port on both sides.
Version 33.0
TX Text Control 33.0 was released in March 2025. It introduced Linux support.
Update Notes
| Class/property/method/event | Update note |
|---|---|
Barcode.TXBarcodeControl.Load method | Both overloads of the method with Barcode.SerializationFormat as parameter have been removed. |
WPF.Barcode.TXBarcodeControl.Load method | Both overloads of the method with Barcode.SerializationFormat as parameter have been removed. |
Barcode.TXBarcodeControl.Save method | Both overloads of the method with Barcode.SerializationFormat as parameter have been removed. |
WPF.Barcode.TXBarcodeControl.Save method | Both overloads of the method with Barcode.SerializationFormat as parameter have been removed. |
The TXBarcodeControl classes are documented for the Windows Forms and WPF products, and the API reference of TX Text Control .NET Server does not contain them. These entries matter if you share code with a Windows Forms or WPF application.
Two Engines and New NuGet Packages
Version 33.0 split TX Text Control .NET Server into two engines, each with its own NuGet package:
| Package | Engine | Operating systems |
|---|---|---|
TXTextControl.TextControl.ASP.SDK | Classic, the original engine | Windows |
TXTextControl.TextControl.Core.SDK | Core, new in 33.0 | Windows and Linux |
What this means for an upgrade:
- .NET 8 or higher. The assemblies of both packages are compiled for .NET 8 and support .NET 8 and higher. The NuGet packages of 32.0 Service Pack 2 were .NET 6 libraries, so projects that target .NET 6 or .NET 7 must change their target framework to .NET 8 or higher. Text Control continues to provide .NET Framework assemblies for .NET Framework 4.8.
- Existing Windows applications can keep
TXTextControl.TextControl.ASP.SDK. - Applications that you migrate to .NET 8 or higher, and new applications, should use
TXTextControl.TextControl.Core.SDK, as recommended by Text Control. The Core engine uses its own SVG-based rendering and a Fonts folder that is deployed with the application instead of the system fonts, and it does not load or save the legacy Word binary format (DOC). See "From Classic to Core" in Migrating from Previous Versions. - Linux and Linux containers require the Core engine.
- The Document Editor and Document Viewer NuGet packages of 33.0 work with both engines and are installed as in the previous version.
Document Editor Backend
In 32.0 and earlier, the synchronization service of the Document Editor was only available as a Windows service. In ASP.NET Core applications, version 33.0 replaced it with TXTextControl.Web.Server.Core, a .NET 8 application that runs on Windows and Linux. By default, it listens on TCP port 4282. ASP.NET applications on the .NET Framework still deploy the TX TextControl Service, also in 34.0.
The 33.0 tutorials add the backend to an ASP.NET Core application in two steps: they copy the TXTextControl.Web.Server.Core files from the installation folder into the project with Copy to Output Directory set to Copy always, and they add a hosted service class TXWebServerProcess that starts TXTextControl.Web.Server.Core.dll. In 34.x, the TXTextControl.Web.DocumentEditor.Backend package replaces both steps.
If you change the port in TXTextControl.Web.Server.Core.config.json, pass the same address and port to the middleware:
app.UseTXWebSocketMiddleware("localhost", 34567);
Frontend Packages
@txtextcontrol/tx-react-document-editor33.0.0 changed its peer dependency from React^18.2.0to React^19.0.0. Upgrade React applications to React 19 before you install the 33.0 or 34.0 Document Editor.@txtextcontrol/tx-ng-document-editor33.0.0 requires Angular>=17.3.12 <=19.
Version 32.0
TX Text Control 32.0 was released in September 2023.
Update Notes
| Class/property/method/event | Update note |
|---|---|
| Page.GetImage method | A new overload returns a string in Scalable Vector Graphics (.SVG) format. |
| ServerVisualization.View.GetImage method | A new overload returns a string in Scalable Vector Graphics (.SVG) format. |
Both entries add new overloads, so existing code does not need to change.
Document Editor Middleware in ASP.NET Core
ASP.NET Core applications that use the Document Editor must change Program.cs when they upgrade to 32.0. Find the following line:
// attach the Text Control WebSocketHandler middleware
app.UseMiddleware<TXTextControl.Web.WebSocketMiddleware>();
Replace it with this line:
app.UseTXWebSocketMiddleware();
At the very top of Program.cs, add the namespace of the extension method:
using TXTextControl.Web;
Document Editor TCP Service
The TCP synchronization service of a new major version listens on a different TCP port than the service of the previous version. You can install the 32.0 service next to the running 31.0 service and switch your applications over.
Service Pack 2: Licensing Without licenses.licx
Service Pack 2 changed the licensing of .NET applications (.NET 6 and higher): TX Text Control no longer uses the .NET license compiler (lc.exe), and updating the NuGet packages replaces licenses.licx with the license file txtextcontrol.server.license, which is compiled into your assembly. Existing licenses continue to work, and applications based on the .NET Framework keep using licenses.licx. A class library that contains the license now sets the static EntryAssembly property to be called from assemblies without a license. License File Changes describes what to do for each kind of project, and Class Libraries and Unit Tests shows the code.
Document Viewer 32.2.1: PDF.js 4.0
The Document Viewer 32.2.1 supports PDF.js 4.0 and later. When you update PDF.js to version 4.0 or later, replace the DocumentLoadSettings.PDFJS.BasePath property with the two properties LibrarySourcePath and WorkerSourcePath. This is the old code in an ASP.NET Core view:
@Html.TXTextControl().DocumentViewer(settings => {
settings.DocumentLoadSettings.PDFJS.BasePath = "/Scripts/pdf.js/";
}).Render()
This is the new code:
@Html.TXTextControl().DocumentViewer(settings => {
settings.DocumentLoadSettings.PDFJS.LibrarySourcePath = "/Scripts/pdf.js/pdf.min.mjs";
settings.DocumentLoadSettings.PDFJS.WorkerSourcePath = "/Scripts/pdf.js/pdf.worker.min.mjs";
}).Render()
In Angular, set the pdfjs object of documentLoadSettings:
<tx-document-viewer
width="800px"
height="800px"
basePath="YOUR_BACKEND_URL"
[documentLoadSettings] = "{
pdfjs: {
workerSourcePath: 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.0.379/pdf.worker.min.mjs',
librarySourcePath: 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.0.379/pdf.min.mjs'
}}">
</tx-document-viewer>
In React, pass the same settings to the documentLoadSettings property:
<DocumentViewer
width="1000px"
height="800px"
basePath="YOUR_BACKEND_URL"
documentLoadSettings={{ pdfjs : {
workerSourcePath : "https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.0.379/pdf.worker.min.mjs",
librarySourcePath: "https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.0.379/pdf.min.mjs"}}}
>
</DocumentViewer>
Version 31.0
TX Text Control 31.0 was released in September 2022. Its What's New documentation lists no Update Notes.
Version 31.0 supports .NET 5, .NET 6 and .NET 7 (Preview), including NuGet packages for ASP.NET. After the installation, the setup adds the new package source "Text Control Offline Packages", which contains the NuGet packages for the Text Control components. The packages configure references and licenses automatically. Projects that use assembly references can move to these packages, as described in Migrating from Previous Versions.
Version 30.0
TX Text Control 30.0 was released in November 2021.
Update Notes
| Class/property/method/event | Update note |
|---|---|
| LoadSettings.PDFImportSettings property | Has been extended with the LoadEmbeddedFiles, LoadMetadata and the GenerateXMLAsEmbeddedFile setting. |
The entry extends an existing property, so existing code does not need to change. The Update Notes of version 29.0 contain the same entry, and version 29.0 introduced the embedded files and the metadata of PDF documents, so the settings were already available before 30.0. The current PDFImportSettings enumeration has no LoadMetadata or GenerateXMLAsEmbeddedFile value: LoadEmbeddedData provides the metadata, form fields and text coordinates of a PDF document through LoadSettings.EmbeddedData.
Assemblies No Longer Registered in the GAC
Since 30.0, TX Text Control supports several .NET versions, including .NET Framework 4.8, .NET 5 and .NET 6. For that reason, the setup no longer registers the assemblies in the global assembly cache (GAC). This affects applications that use licenses.licx:
- Every entry in licenses.licx must contain the full version number of the assembly. Before 30.0, entries without a version number were possible. Without the version number, an older TX Text Control version found in the GAC can be used, which leads to a licensing error.
- If you build license files manually with lc.exe, for example on a build server, pass the full path of each assembly with the
/ioption. Otherwise, an older version from the GAC might be used.
An entry for ServerTextControl in version 30.0 looks like this: TXTextControl.ServerTextControl, TXTextControl.Server, Version=30.0.1500.500, Culture=neutral, PublicKeyToken=6b83fe9a75cfb638. Use the version number of the assemblies your project references.
Versions Before 30.0
The entries above start at version 30.0. If your application uses an older version, read the Update Notes of every version in between as well. Two of them change existing API in a way that can break the build:
- 24.0. The handler of the ServerVisualization.View.Changed event is a
ViewChangedEventHandlerinstead of aSystem.EventHandler, and it receives a ViewChangedEventArgs argument. - 28.0. DocumentTarget no longer derives from TextField, so inherited members that had no meaning for a target, such as
TextandEditable, are gone, and the valueTextFieldType.DocumentTargethas been removed.
Older Versions in What's New describes the versions before 30.0.
Next Steps
- Migrating from Previous Versions: step-by-step paths for typical upgrades.
- Updating NuGet Packages: update the packages after you have planned the changes.
- Updating npm Packages: peer dependencies of the Angular and React packages.
- What's New in Version 34.0: the new features of the current version.