TX Text Control .NET Server

Breaking Changes

Topic

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 worker TXTextControl.Web.Server.Core and the hosted service DocumentEditorWorkerManager that 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: install TXTextControl.TextControl.Core.SDK as 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.DocumentViewer and TXTextControl.Web.DocumentViewer.Classic (first version 34.0.0). Their READMEs list the matching assemblies as dependencies: TXTextControl.Core.dll, TXTextControl.Server.Core.dll and TXDocumentServer.Core.dll for the Document Viewer package, and TXTextControl.dll, TXTextControl.Server.dll and TXDocumentServer.dll for the Classic package. Choose the viewer package that matches the SDK package of your project.

Frontend Packages

  • @txtextcontrol/tx-react-document-editor 34.0.0 requires React ^19.2.0 as a peer dependency.
  • @txtextcontrol/tx-ng-document-editor 34.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.Core listens on TCP port 4283 by default, and UseTXWebSocketMiddleware() 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/eventUpdate note
Barcode.TXBarcodeControl.Load methodBoth overloads of the method with Barcode.SerializationFormat as parameter have been removed.
WPF.Barcode.TXBarcodeControl.Load methodBoth overloads of the method with Barcode.SerializationFormat as parameter have been removed.
Barcode.TXBarcodeControl.Save methodBoth overloads of the method with Barcode.SerializationFormat as parameter have been removed.
WPF.Barcode.TXBarcodeControl.Save methodBoth 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:

PackageEngineOperating systems
TXTextControl.TextControl.ASP.SDKClassic, the original engineWindows
TXTextControl.TextControl.Core.SDKCore, new in 33.0Windows 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-editor 33.0.0 changed its peer dependency from React ^18.2.0 to 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-editor 33.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/eventUpdate note
Page.GetImage methodA new overload returns a string in Scalable Vector Graphics (.SVG) format.
ServerVisualization.View.GetImage methodA 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/eventUpdate note
LoadSettings.PDFImportSettings propertyHas 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 /i option. 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 ViewChangedEventHandler instead of a System.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 Text and Editable, are gone, and the value TextFieldType.DocumentTarget has been removed.

Older Versions in What's New describes the versions before 30.0.

Next Steps