Private Text Control NuGet Feed The Text Control Private NuGet Feed provides seamless access to licensed packages for your projects. With automatic license embedding, you can install and update Text Control packages just like any public NuGet package, without the hassle of manual license file management or activation steps. This means you can focus on coding while ensuring your builds are always license-compliant. Text Control Private NuGet Feed Introduction This article will demonstrate how to create a Document Editor ASP.NET Core application using the Text Control private NuGet feed. We will develop a basic web application that allows users to edit documents directly in their web browser using the Document Editor component from Text Control. The backend package is powered by the private NuGet feed, which provides seamless licensing and eliminates the need to download server components. Prerequisites To use the private NuGet feed, you must have a valid license for the Text Control .NET Server for ASP.NET product. A serial number must be assigned to your email address. If you do not have a license, you can request one from your account holder. Learn more Authentication uses the assigned developer's email address and API token. This email address connects to all the serial numbers assigned to the developer, providing access to their entire license portfolio. Learn how to create a NuGet token and use the Text Control Private NuGet Feed in your projects. Creating the Application Make sure that you have installed the latest version of Visual Studio 2026, including the .NET 10 SDK. In Visual Studio 2026, create a new project by choosing Create a new project. Select ASP.NET Core Web App (Model-View-Controller) as the project template and confirm with Next. Enter a project name and choose a location to save the project. Confirm with Next. Choose .NET 10.0 (Long Term Support) as the Framework. Adding the NuGet Packages In Solution Explorer, select your project and choose Manage NuGet Packages… from the Project menu. Then set your private NuGet feed (TextControl) as the package source. Install the following packages: TXTextControl.Web TXTextControl.TextControl.Core.SDK TXTextControl.Web.DocumentEditor.Backend Configure the Application Open the Program.cs file located in the project's root folder. At the very top of the file, insert the following code: using TXTextControl.Web; using TXTextControl.Web.DocumentEditor.Backend; After builder.Services.AddControllersWithViews();, add the following code: builder.Services.AddHostedService<DocumentEditorWorkerManager>(); Add the following code before the entry app.UseRouting();: // enable Web Sockets app.UseWebSockets(); // attach the Text Control WebSocketHandler middleware app.UseTXWebSocketMiddleware(); The overall Program.cs file should look like this: using TXTextControl.Web; using TXTextControl.Web.DocumentEditor.Backend; var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllersWithViews(); builder.Services.AddHostedService<DocumentEditorWorkerManager>(); var app = builder.Build(); // Configure the HTTP request pipeline. if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Home/Error"); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } app.UseHttpsRedirection(); app.UseRouting(); app.UseWebSockets(); app.UseTXWebSocketMiddleware(); app.UseAuthorization(); app.MapStaticAssets(); app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}") .WithStaticAssets(); app.Run(); Adding the Control to the View Find the Index.cshtml file in the Views -> Home folder. Replace the complete content with the following code to add the document editor to the view: @using TXTextControl.Web.MVC @{ var sDocument = "<html><body><p>Welcome to <strong>Text Control</strong></p></body></html>"; } @Html.TXTextControl().TextControl(settings => { settings.UserNames = new string[] { "Tim Typer" }; }).LoadText(sDocument, TXTextControl.Web.StringStreamType.HTMLFormat).Render() <input type="button" onclick="insertTable()" value="Insert Table" /> <script> function insertTable() { TXTextControl.tables.add(5, 5, 10, function(e) { if (e === true) { // if added TXTextControl.tables.getItem(function(table) { table.cells.forEach(function(cell) { cell.setText("Cell text"); }); }, null, 10); } }) } </script> Starting the Application Start the application by pressing F5 or by choosing Debug -> Start Debugging from the main menu.