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.CrossPlatformpackage and any native runtime assets (e.g.,SkiaSharp.NativeAssets.Linuxon Linux).