# Installation: .NET platform

This section explains in more detail how to install Saxon on the .NET platform.

The source code of Saxon is written in Java. The version of the product that runs on the .NET platform has been produced by cross-compiling the Java bytecode into CIL code, which is then packaged as a .NET assembly. The cross-compiler is the open-source IKVMC product. The code of course makes many calls on classes provided by the Java run-time library. On the .NET platform, most of these are provided by the OpenJDK product: Saxon comes with a version of the OpenJDK library, itself cross-compiled as a .NET assembly. Other run-time services are obtained from the .NET platform itself. These include XML parsing, handling of URI resolution, and internationalized collation support.

For more information about Saxon on the .NET platform, see Saxon on .NET.

Prerequisites: .NET platform

The following software must be installed separately, it is not included with the Saxon download.

- To run Saxon you need to install the .NET platform, version 2.0 or later.

- It has been reported that Saxon runs without problems on .NET version 4.0, but this platform has not been tested by Saxonica.

Because Saxon is run from the command line, you might find it useful (under Microsoft Windows) to have a text editor with better command-line support than the standard DOS window. I use UltraEdit.

Installing the software

The software is issued in the form of a .exe file containing an installation wizard: all you need to do is to run it, answering simple prompts such as the directory in which you want it installed.

The main components are as follows:

File | Contents
saxon9he.dll, saxon9pe.dll or saxon9ee.dll | The Saxon library for Home Edition, Professional Edition, or Enterprise Edition
saxon9he-api.dll, saxon9pe-api.dll, saxon9ee-api.dll | The classes implementing Saxon's .NET API. The three DLLs are identical except that they contain references to the appropriate version of the main Saxon DLL.
Transform.exe | Command line entry-point for XSLT transformation
Query.exe | Command line entry-point for XQuery evaluation
Validate.exe | (Saxon-EE only) Command line entry-point for XML Schema validation
IKVM.Runtime.dll | Run-time library for the IKVM cross-compiler
IKVM.OpenJDK.XXXX.dll | A number of DLL files containing parts of the Java OpenJDK class library cross-compiled to .NET

These files will typically be found in a folder with a name such as `c:\Program Files\Saxonica\SaxonHE9.3N\bin`

You may find it useful to add this directory to the `PATH` environment variable. This enables you to use the commands `Transform`, `Query`, and `Validate` without identifying their location explicitly.

Obtaining a license key

The open-source Saxon-HE product does not require any license key. For Saxon-PE and Saxon-EE, however, you need to obtain a license key from Saxonica. You can order a free license key for a 30-day evaluation, or purchase an unrestricted license key from the Saxonica web site.

Since Saxon 9.2 license keys are compatible between the Java and .NET platforms.

The license key will arrive in the form of a file named `saxon-license.lic` attached to an email message. Copy the file into the `/bin` directory containing the Saxon DLLs, for example `c:\Program Files\Saxonica\SaxonEE9.3N\bin`

If you acquire Saxon-PE or Saxon-EE as a component of an application with which it has been integrated, the application may activate the software automatically using an OEM license key. In this case you do not need to acquire an individual license key of your own.

Sample applications

Saxon on .NET is distributed with a number of sample applications. These are issued (together with Saxon-HE source code and documentation) in a separate download file `saxon-resources9-n.zip`, available from both the SourceForge and Saxonica web sites. Once this is unzipped, the sample applications can be found in the directory `/samples`. They are described here.

Many of the samples are equally applicable to the Java and .NET platforms. However, there are several programs in the `/samples/cs` directory that are specifically designed to illustrate ways of using the `Saxon.Api` interface. This interface is exclusive to the .NET product, and is described in more detail in Saxon API for .NET. These sample applications are described in Example applications for .NET.

Next