# Development Licenses

> Assign serial numbers to developers, get the license file from NuGet into your assembly, set EntryAssembly for class libraries and tests, and use build servers.

- **Product:** TX Text Control .NET Server
- **Section:** Documentation
- **Kind:** Topic
- **Path:** TX Text Control .NET Server > Installation Guide > License Configuration > Development Licenses
- **2329 words**
- **Web URL:** https://docs.textcontrol.com/tx-text-control-dotnet-server/installation/licensing/development/
- **LLMs URL:** https://docs.textcontrol.com/tx-text-control-dotnet-server/installation/licensing/development/llms.txt
- **LLMs-Full URL:** https://docs.textcontrol.com/tx-text-control-dotnet-server/installation/licensing/development/llms-full.txt

---

During development, TX Text Control .NET Server is licensed per developer, and the license reaches your projects through the NuGet packages. The details cover assigning serial numbers to developers, the license file in the NuGet packages, class libraries and unit tests, build servers and how to tell trial packages from licensed packages.

### Per-Developer Licensing

A developer license is for a single developer, not for an entire company. If additional developers want to use TX Text Control, they need additional licenses (license agreement, section 2).

- **Every developer needs an assigned license.** This includes quality assurance engineers who compile your application. For example, if five developers work on one application, you need five developer licenses.
- **Licenses are assigned to people, not machines.** The product is not licensed per machine, nor per build server for development purposes.
- **One license for Windows and Linux.** TX Text Control for Linux is included in the standard TX Text Control .NET Server license, which gives you the NuGet packages for both platforms.
- **Build servers do not need a license of their own.** If you use a build server, every developer who checks in code that uses TX Text Control classes needs their own license.
- **Licenses are perpetual.** They do not expire. A subscription gives you access to new releases, service packs and technical support for one year. See the [Licensing Overview](https://docs.textcontrol.com/tx-text-control-dotnet-server/overview/licensing/llms-full.txt).

For organizations with multiple developers, Text Control also offers team licenses, volume licensing and site licensing, and the sales team recommends the model that fits your organization. Deploying your application to production servers is licensed separately with [runtime licenses](https://docs.textcontrol.com/tx-text-control-dotnet-server/installation/licensing/runtime/llms-full.txt).

### Assign Serial Numbers to Developers

The account owner assigns a serial number to each developer's email address in the **Manage Products** section of the Text Control account. For a serial number that is eligible for the NuGet feed, the developer then receives an email with a download link for a personalized `nuget.config` file with the credentials for the [Text Control Private NuGet Feed](https://docs.textcontrol.com/tx-text-control-dotnet-server/installation/nuget/private-feed/llms-full.txt). [Create a Token by Assigning a Serial Number](https://docs.textcontrol.com/tx-text-control-dotnet-server/installation/nuget/private-feed/api-token/#create-a-token-by-assigning-a-serial-number) has the steps and explains how long the token is valid and what happens when you reassign or unassign a serial number.

### How the License Gets Into Your Project

The license always comes with the NuGet packages. There are two ways to get licensed packages.

#### From the Text Control Private NuGet Feed

The private NuGet feed authenticates with the assigned developer's email address and API token, shows only the packages and versions the developer is licensed for, and injects the license into each package on the server before the download. [How the Feed Works](https://docs.textcontrol.com/tx-text-control-dotnet-server/installation/nuget/private-feed/#how-the-feed-works) describes it.

#### From the Offline Packages of the Setup

The TX Text Control setup registers a local NuGet package source named **Text Control Offline Packages**, for example in `C:\Program Files (x86)\Text Control GmbH\NuGetPackages`. The packages in this source contain the licensing information of your installation.

See [Offline Packages](https://docs.textcontrol.com/tx-text-control-dotnet-server/installation/nuget/offline-packages/llms-full.txt) for details.

#### The License File in the Package

The `TXTextControl.TextControl.Core.SDK` and `TXTextControl.TextControl.ASP.SDK` packages contain a file named `txtextcontrol.server.license` with the build action `EmbeddedResource`. When you build the project that references the package, the license is embedded into its assembly. You do not add the file yourself, and you do not write any license code.

**The license file must not be shared.** It is generated and contains private, encrypted serial number information unique to each installation. The license agreement (section 5c) says that such license files must not be given to other users, nor distributed in any form. [Terms to Know](https://docs.textcontrol.com/tx-text-control-dotnet-server/overview/licensing/#terms-to-know) summarizes the other rules for the applications you build.

Your personalized `nuget.config` contains your credentials, so do not commit it to source control.

### licenses.licx Is No Longer Used

.NET projects with the NuGet packages don't need a *licenses.licx* file: since TX Text Control 32.0 Service Pack 2, the license file described above replaces it, and updating an older project to a newer package removes *licenses.licx*. Applications based on the .NET Framework continue to use *licenses.licx*. [License File Changes](https://docs.textcontrol.com/tx-text-control-dotnet-server/installation/upgrading/previous-versions/#license-file-changes) describes what to do when you upgrade each kind of project.

### Class Libraries and Unit Tests

By default, TX Text Control looks for the license in the application's executable assembly. If TX Text Control is used in a class library that is called from other assemblies, the license is embedded in the class library, not in the executable. In that case, tell TX Text Control where to look for the license with the static [ServerTextControl.EntryAssembly](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/servertextcontrol/entryassembly-property/llms-full.txt) property. This write-only property has been available since TX Text Control 32.0 Service Pack 2.

Typical cases are:

- A class library that uses TX Text Control and is called from an application that does not reference TX Text Control.
- A class library that is tested with a test framework such as NUnit or MSTest. These frameworks run the tests from precompiled calling assemblies that you cannot change.

The following class library sets the entry assembly to itself in a static constructor:

```csharp
namespace MyClassLibrary
{
    public static class Class1
    {
        static Class1()
        {
            // The license is embedded in this class library
            TXTextControl.ServerTextControl.EntryAssembly =
                typeof(Class1).Assembly;
        }

        public static string GetHtml()
        {
            using (TXTextControl.ServerTextControl tx =
                new TXTextControl.ServerTextControl())
            {
                tx.Create();
                tx.Text = "Hello, World!";

                string html = "";
                tx.Save(out html, TXTextControl.StringStreamType.HTMLFormat);

                return html;
            }
        }
    }
}
```

A test project that references the class library can now call `GetHtml` without a TX Text Control reference or license of its own. The following NUnit test calls the library:

```csharp
namespace MyUnitTest
{
    public class Tests
    {
        [Test]
        public void Test1()
        {
            var html = MyClassLibrary.Class1.GetHtml();
            Assert.That(html, Does.Contain("Hello, World!"));
        }
    }
}
```

The blog post [Unit Testing with NUnit and MSTest and TX Text Control .NET 34.0](https://www.textcontrol.com/blog/2024/01/05/unit-testing-with-nunit-and-mstest-and-tx-text-control-net-34-0/) walks through the complete solution.

The license agreement doesn't allow you to use TX Text Control to create wrappers or similar libraries with the primary intent of selling or distributing them as a separate library; see [Terms to Know](https://docs.textcontrol.com/tx-text-control-dotnet-server/overview/licensing/#terms-to-know).

### Build Servers and CI/CD

Build servers and CI/CD pipelines restore the licensed packages from the private NuGet feed. As described above, the build server does not need its own license, but every developer who checks in code that uses TX Text Control classes does. [CI/CD Authentication](https://docs.textcontrol.com/tx-text-control-dotnet-server/installation/nuget/private-feed/ci-cd/llms-full.txt) explains how to store the feed credentials as secrets and create `nuget.config` during the build. If your organization already uses Azure Artifacts, you can also push the packages from the Text Control Offline Packages folder of your licensed installation to your own feed, as [Use the Packages on Other Machines](https://docs.textcontrol.com/tx-text-control-dotnet-server/installation/nuget/offline-packages/#use-the-packages-on-other-machines) shows.

### Trial and Licensed Packages

The trial setup also installs a **Text Control Offline Packages** source, but its packages are trial packages: they add trial text to the documents your application creates and may only be used for evaluation, as [Evaluating with the Trial Version](https://docs.textcontrol.com/tx-text-control-dotnet-server/installation/licensing/#evaluating-with-the-trial-version) describes. If documents created by your application contain the trial text, the application was built with trial packages. Install the packages from the private NuGet feed or from the offline packages of the licensed setup, and rebuild the application.

Web packages installed from nuget.org instead of the private feed require the trial version on the development machine; see [Web Packages on nuget.org and on the Private Feed](https://docs.textcontrol.com/tx-text-control-dotnet-server/installation/nuget/public-packages/#web-packages-on-nuget-org-and-on-the-private-feed).

### Next Steps

- [Runtime Licenses](https://docs.textcontrol.com/tx-text-control-dotnet-server/installation/licensing/runtime/llms-full.txt) — license the production servers your application runs on.
- [Text Control Private NuGet Feed](https://docs.textcontrol.com/tx-text-control-dotnet-server/installation/nuget/private-feed/llms-full.txt) — set up the feed in Visual Studio and the .NET CLI.
- [CI/CD Authentication](https://docs.textcontrol.com/tx-text-control-dotnet-server/installation/nuget/private-feed/ci-cd/llms-full.txt) — restore licensed packages in build pipelines.
- [Troubleshooting: Licensing](https://docs.textcontrol.com/tx-text-control-dotnet-server/troubleshooting/licensing/llms-full.txt) — solve common license problems.

---

## Nearby

- **Previous:** [License Configuration](https://docs.textcontrol.com/tx-text-control-dotnet-server/installation/licensing/llms-full.txt)
- **Next:** [Runtime Licenses](https://docs.textcontrol.com/tx-text-control-dotnet-server/installation/licensing/runtime/llms-full.txt)
