# Breaking Changes

Learn the breaking changes from ActiveReports 12 to ActiveReports 18, control changes, other changes, classes in different namespaces, namespace changes, etc.

## Content

## Breaking changes from ActiveReports 18 to ActiveReports 19

### Dropped Microsoft Visual Studio 2017 Support

ActiveReports 19 is not supported in Microsoft Visual Studio 2017. You should have Microsoft Visual Studio 2019 or 2022 installed.

### Upgraded ActiveReports to use .NET Framework 4.7.2 from 4.6.2

Since .NET Framework 4.7.2 provides enhanced support for .NET Standard 2.0, we have upgraded ActiveReports to use 4.7.2 instead of 4.6.2. As a result, we removed implicit conversion between [System.Drawing.Image](https://learn.microsoft.com/en-us/dotnet/api/system.drawing.image?view=windowsdesktop-9.0) and [GrapeCity.ActiveReports.Document.Drawing.Image](/activereportsnet/api/v19.2/MESCIUS.ActiveReports.Core.Document/GrapeCity.ActiveReports.Document.Drawing.Image.html). If you work extensively with images, this change may lead to performance issues. Now the conversions should be done on the client’s side as shown in the following example:

```csharp
public static Document.Drawing.Image ToInternalImage(this System.Drawing.Image image) {
    using (var ms = new MemoryStream()) {
        image.SaveToStream(ms);
        return GrapeCity.ActiveReports.Document.Drawing.Image.FromStream(ms);
    }
}
public static System.Drawing.Image ToGdiImage(this GrapeCity.ActiveReports.Document.Drawing.Image image) {
    using (var ms = new MemoryStream(image.Data)) return System.Drawing.Image.FromStream(ms);
}
```

To ensure you are not stuck, update projects to .NET Framework 4.7.2 or .NET (formerly .NET Core).

### Dropped Excel 95 (BIFF7) from the supported export formats

Following changes have been made:

MESCIUS.ActiveReports.SpreadBuilder.dll

* The obsolete **FileVersion** property in [GrapeCity.SpreadBuilder.Workbook](/activereportsnet/api/v19.2/MESCIUS.ActiveReports.SpreadBuilder/GrapeCity.SpreadBuilder.Workbook.html) class is now internal.
* Enum **GrapeCity.SpreadBuilder.BiffVersion** is now internal.
* Removed Xls95 value from enum [GrapeCity.SpreadBuilder.FileFormat](/activereportsnet/api/v19.2/MESCIUS.ActiveReports.SpreadBuilder/GrapeCity.SpreadBuilder.FileFormat.html).

MESCIUS.ActiveReports.Export.Excel.dll

Removed Xls95 value from enum [GrapeCity.ActiveReports.Export.Excel.Section.FileFormat](/activereportsnet/api/v19.2/MESCIUS.ActiveReports.Export.Excel/GrapeCity.ActiveReports.Export.Excel.Section.FileFormat.html).

MESCIUS.ActiveReports.Web.dll

Removed Xls95 value from enum [GrapeCity.ActiveReports.Web.XlsExportSettings.FileFormats](/activereportsnet/api/v19.2/MESCIUS.ActiveReports.Web/GrapeCity.ActiveReports.Web.XlsExportSettings.FileFormats.html).

Since the Microsoft Excel 95 (BIFF7) export is no more supported, you should use Microsoft Excel 97 instead.

### Removed DbConnectionAdapter class

GrapeCity.ActiveReports.ReportsCore.Data.DataProviders.DbConnectionAdapter class from MESCIUS.ActiveReports.dll is converted from public to internal.

You should implement **IDbConnectionAdapter** and if necessary, any of **IDbCommandParametersAdapter**, **IDbConnectionAdapterWithDataSource**, and **IDbCommandAdapterWithCache**.

### Renamed DataEngine assemblies and packages

Renamed following assemblies and corresponding packages:

* MESCIUS.Data.DataEngine → MESCIUS.ActiveReports.Core.Data.DataEngine
* MESCIUS.Data.ExpressionInfo → MESCIUS.ActiveReports.Core.Data.ExpressionInfo 
* MESCIUS.Data.VBFunctionLib → MESCIUS.ActiveReports.Core.Data.VBFunctionLib

### Removed DataProviderInfo classes from the viewer and designer backends

Following classes have been removed:

* GrapeCity.ActiveReports.Web.Designer
* GrapeCity.ActiveReports.Web.Viewer

The corresponding methods' signatures that have been changed are:

GrapeCity.ActiveReports.Web.Viewer.ReportViewerConfiguration.UseDataProviders(GrapeCity.ActiveReports.Web.Viewer.DataProviderInfo[]) → [GrapeCity.ActiveReports.Web.Viewer.ReportViewerConfiguration.UseDataProviders(GrapeCity.ActiveReports.Configuration.DataProviderInfo\[\])](/activereportsnet/api/v19.2/MESCIUS.ActiveReports.Web.Viewer/GrapeCity.ActiveReports.Web.Viewer.ReportViewerConfiguration.html)

GrapeCity.ActiveReports.Web.Designer.ReportDesignerConfiguration.UseDataProviders(GrapeCity.ActiveReports.Web.Designer.DataProviderInfo[]) → [GrapeCity.ActiveReports.Web.Designer.ReportDesignerConfiguration.UseDataProviders(GrapeCity.ActiveReports.Configuration.DataProviderInfo\[\])](/activereportsnet/api/v19.2/MESCIUS.ActiveReports.Aspnetcore.Designer/GrapeCity.ActiveReports.Web.Designer.ReportDesignerConfiguration.html)

Ensure adding ‘using [GrapeCity.ActiveReports.Configuration](/activereportsnet/api/v19.2/MESCIUS.ActiveReports/GrapeCity.ActiveReports.Configuration.html);’ directive in the web application setup class where the **UseDataProviders** method is used.

Changed **Type** of some properties in **PageReportModel**

The Type for following properties is changed from **ExpressionInfoCollection** to **IList\<ExpressionInfo>**

* Changed type of the [GroupExpressions](/activereportsnet/api/v19.2/MESCIUS.ActiveReports.Core.Rdl/GrapeCity.ActiveReports.PageReportModel.Grouping.html) property in the [GrapeCity.ActiveReports.PageReportModel.Grouping](/activereportsnet/api/v19.2/MESCIUS.ActiveReports.Core.Rdl/GrapeCity.ActiveReports.PageReportModel.Grouping.html) class
* Changed type of the [Values](/activereportsnet/api/v19.2/MESCIUS.ActiveReports.Core.Rdl/GrapeCity.ActiveReports.PageReportModel.DefaultValue.html) property in the [GrapeCity.ActiveReports.PageReportModel.DefaultValue](/activereportsnet/api/v19.2/MESCIUS.ActiveReports.Core.Rdl/GrapeCity.ActiveReports.PageReportModel.DefaultValue.html) class
* Changed type of [FilterValues](/activereportsnet/api/v19.2/MESCIUS.ActiveReports.Core.Rdl/GrapeCity.ActiveReports.PageReportModel.Filter.html) property in class [GrapeCity.ActiveReports.PageReportModel.Filter](/activereportsnet/api/v19.2/MESCIUS.ActiveReports.Core.Rdl/GrapeCity.ActiveReports.PageReportModel.Filter.html)

```csharp
class GrapeCity.ActiveReports.PageReportModel.Filter {
  //...
  ExpressionInfoCollection FilterValues {get;}
}
//changed to
class GrapeCity.ActiveReports.PageReportModel.Filter {
  //...
  IList<ExpressionInfo> FilterValues {get;}
}
```

This change has no impact on our users.

### Changed Themes API in JS Viewer and Web Designer

The Themes API for both **WebDesigner** and **JS Viewer** has been unified under **ActiveReports.ColorThemes**. You can use any module ['@mescius/activereportsnet-designer'](mailto:'@mescius/activereportsnet-designer') and ['](mailto:'@mescius/activereportsnet-viewer')[@mescius/activereportsnet-viewer](https://www.npmjs.com/package/@mescius/activereportsnet-viewer)' to export theme object and apply it in the viewer and webdesigner.

You are required to update code to make older [applications](/activereportsnet/docs/v19.2/developers/create-applications/apply-themes-webdesigner-jsviewer-components) work in ActiveReports.NET 19.

### Implemented new Chart model

The [Chart API](/activereportsnet/api/v19.2/MESCIUS.ActiveReports.Core.Rdl/GrapeCity.ActiveReports.PageReportModel.Chart.html) has been reworked in order to improve flexibility and configurability of charts.

The charts in the reports created from previous ActiveReports versions 18, 17, and 16, when opened in ActiveReports 19 Designer, are automatically converted to a new chart model. The results are usually the same; in rare scenarios, manual updates may be required.

If charts in the previous versions have been generated using the Chart API, they will require manual migration and code updation to give the same results in ActiveReports.NET 19.

For breaking changes upto previous version, see the documentation page of [ActiveReports 18](https://developer.mescius.com/activereportsnet/docs/versions/v18/online/breaking-changes.html).