Table of Contents

Migrating from Classic Edition

This guide walks you through converting an existing List & Label (LL) "classic" application to use the Cross Platform (CP) edition. We'll cover:

  • Converting your LL project files to JSON
  • Updating your assembly/NuGet references
  • Removing unsupported options
  • Adjusting your export call
Note

The classes required for conversion are contained in a separate NuGet package, combit.ListLabel31.ProjectConverter. Make sure to add this package to your app to enable conversions. If you're not integrating the conversion into your existing application but instead creating a custom converter app, add a reference to either the combit.ListLabel31 or combit.ListLabel31.Enterprise package, depending on which one your classic app already references.


Convert your project files

First, convert all project files to the new JSON-based format. If you're already working with a repository, the easiest option is to use a SynchronizedRepository.

For file-based reports, you can instead use the ProjectConverter class.

The following C# example demonstrates this approach - just adjust the paths as needed.

using System;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using combit.Reporting.ProjectConverter;

class Program
{
    static void Main()
    {
        // Path to your existing LL project files
        string sourcePath = @"C:\MyApp\ProjectFiles";

        // Path where converted JSON files will be saved
        string destinationPath = @"C:\MyApp\ConvertedProjectFiles";

        // File extensions to convert - adjust as needed
        string[] fileEndings = { ".lsr", ".lst", ".lbl", ".srt" };

        // Create a new ProjectConverter
        ProjectConverter projectConverter = new();

        // Find all matching files in the source directory (including subfolders)
        var files = Directory
            .EnumerateFiles(sourcePath, "*.*", SearchOption.AllDirectories)
            .Where(file => fileEndings
                .Any(ext => file.EndsWith(ext, StringComparison.OrdinalIgnoreCase)));

        var projectConversionOptions = new projectConversionOptions
        {
            DestinationDirectory      = destinationPath,
            OutputExistsBehavior      = OutputExistsBehavior.Overwrite,
            WriteIndented             = true,
            ConvertReferencedProjects = false,
            ImportData                = "ProjectConverter"
        };

        // Convert all files in one batch
        projectConverter.ConvertProjectsAndWriteToFile(files, projectConversionOptions);

        Debug.WriteLine("Finished");
    }
}
Note
  • Always back up your original project files before running the converter.
  • The converter supports ConvertReferencedProjects, but by default you may disable it if you don't have any references.
  • There are a number of additional conversion methods that also enable conversions on repositories.

Update your assembly or NuGet reference

In your project file (.csproj), replace the classic LL assembly reference or NuGet package with the Cross Platform variant.

<!-- Remove or comment out the old package -->
<!-- <PackageReference Include="combit.ListLabel31" Version="31.*.*" /> -->

<!-- Add the Cross Platform package -->
<PackageReference Include="combit.ListLabel31.CrossPlatform" Version="31.*.*" />

If you referenced the DLL directly:

<!-- Old reference -->
<!-- <Reference Include="combit.ListLabel31"> -->
<!--   <HintPath>..\libs\combit.ListLabel31.dll</HintPath> -->
<!-- </Reference> -->

<!-- New CP reference -->
<Reference Include="combit.ListLabel31.CrossPlatform">
  <HintPath>..\libs\combit.ListLabel31.CrossPlatform.dll</HintPath>
</Reference>

Remove unsupported options

List & Label Cross Platform does not support many of the legacy settings from the classic API. Remove or comment out any code that sets unsupported properties on ListLabel.

Call the export method

The final step is to export your report using the Cross Platform API exactly as before - with one minor change to the namespace. Here's a full example:

using DebwinLogger logger = new DebwinLogger(@"c:\logs\report.log", LogLevel.Info);
ListLabel listLabel = new ListLabel
{
    Logger          = logger,
    DataSource      = GetYourDataSource(),    // e.g. DataSet, IEnumerable<T>, etc.
    AutoProjectFile = Path.Combine(destinationPath, "YourConvertedProject.json"),
    LicensingInfo   = "YOUR-LICENSING-KEY"
};

var exportConfig = new ExportConfiguration(
    LlExportTarget.Pdf,
    @"c:\exports\report.pdf",
    listLabel.AutoProjectFile
);
exportConfig.ShowResult = true;

// Execute export
listLabel.Export(exportConfig);
Tip

You can also export to other targets (PNG, JPEG, streaming to Stream, etc.) by choosing the appropriate LlExportTarget and overloads of Export.


Next steps

  • Testing: Run all your existing reports and compare outputs against the classic version.
  • Troubleshooting: See Debugging and troubleshooting for common issues.
  • Deployment: Ensure your deployment pipeline includes the combit.ListLabel31.CrossPlatform package and any native runtime assets (e.g., SkiaSharp.NativeAssets.Linux on Linux).