v. 2025.2.0

Libraries for executing complex scripts provide the ability to dynamically generate and execute code, which can be useful in various scenarios such as developing plugins, creating user scripts, and so on.

Características e benefícios FastScript .NET

Integrability in Projects
Install the necessary package from the NuGet repository or download the package from our website and add the required libraries to your project. No additional modules or special extensions are needed.
Unique Development
The FastScript .NET interpreter does not use CodeDOM and Roslyn platforms. This allows the script library to work seamlessly in environments without code generation such as Native AOT, WASM, and iOS.
Wide Capabilities
Supports scripts that conform to the C# 1.0 specification (with some limitations and additions), including features such as creating classes, structs, events, delegates, etc.
Memory Savings
With each script compilation, FastScript .NET does not create separate DLL assemblies; instead, it stores information in a cache. This saves memory on your device.
Security
FastScript .NET allows you to restrict the use of unsafe APIs, such as file system or network operations. You can limit access to entire assemblies, namespaces, or individual types.
Compactness
The small size of the library (just 300 KB) makes it convenient to use even in resource-constrained projects without overloading the system.
Working in Constrained Environments

Working in Constrained Environments

FastScript .NET is built on the classic "lexer-parser-interpreter" model. It does not use compilation to machine code, allowing it to operate in environments where code generation is restricted (NativeAOT, iOS, WASM). Its performance is comparable to other solutions that use interpretation (such as Lua and JavaScript), although it is slower than compiled C# code.

FastScript .NET supports script execution on various platforms, including iOS. This ensures flexibility and allows the library to be used in a variety of projects without being limited to a single platform. Compatibility with different platforms enhances its applicability and improves development efficiency.

C# as a Scripting Language

C# as a Scripting Language

FastScript .NET has full integration with the .NET platform and allows the use of all libraries, frameworks, and APIs. A unified code base in C# for scripts eliminates the need to maintain code in multiple languages.

Our library helps optimize resource usage, such as memory and CPU time. This is particularly important for mobile applications and other projects operating under constrained resource conditions.

Replacing Popular Solutions

Replacing Popular Solutions

The main tools for scripting in C# are CodeDOM (.NET Framework) and Roslyn (.NET). These solutions offer high performance and support all features of C#, but they have some limitations: they do not work in environments where code generation is prohibited, and there are no tools to restrict unsafe APIs.

FastScript .NET is designed specifically for those who want to bypass these limitations. During execution, our library does not create assemblies that remain in memory until the application terminates. Instead, it allocates structures in memory for the script, which are cleaned up by the garbage collector (GC) after the script instance is no longer in use.

This library is not sold separately, but is included in any version of the .NET report generators. Add to it a cross-platform tool for Avalonia reports, web reporting, FastReport .NET WinForms, WPF, Mono or the most complete of the product sets is FastReport .NET Ultimate.

In addition, in Ultimate .NET includes components for data visualization, namely a business graph with a set of diagrams, and OLAP products for fast processing of large amounts of data.

Artigos reenviados

26 de abril de 2023

How to use RFID tags in FastReport .NET

The RFID tag is an alternative to identifying goods using barcodes. There is an exception that RFID tags use radio signals, which allows the scanning of large batches of goods in short intervals of time. Also, tags are often used to identify employees in companies. The tag contains 4 data banks: 1. The reserved data bank contains two passwords (access and kill). With the first one, it is possible to control opening and closing access to some banks or parts of the memory. The second one is required for permanent disconnection or reuse (if supported by the tag). Each password must be no longer than 32 bits.2. Electronic product code bank.3. Tag ID bank.4. User data bank. All banks except the first one can have a different volume or they can be blocked by suppliers; all of the mentioned are described in the characteristics of the tag. The data formatting standards for these banks are described in this document. For local use, one can use any data formatting convenient to the user to work with them. Label in FastReport .NET is represented as a report object. To edit it, you need to double-click on the object located on the report page in the designer. The editor is divided into tabs, each containing properties for a specific memory bank and one tab with other label options.   In the tabs of banks, you can enter static data in the fields with their names. Or you can use the data column from the data sources below. But for correct work of data substitution from a source, there must be only one data bank on the page. It is this band that will use the data source. In the reserved data bank, passwords are written only as hexadecimal numbers and 8 characters in length. Also, without a set access password (with a non-zero value), the access mode control will not work. In all other banks, you can choose to write data in either hexadecimal or ASCII-encoded string format. In addition to these fields, there are other settings. For more details, see the documentation for the ZPL format at the following link. RFID tags can be programmed by some Zebra printers, so in addition to the RFID tag object itself, their export to ZPL has been added. Note: For correct export, the RFID tag object must be in a single quantity on the page. A new page object, RFID tag at FastReport .NET, allows users to use the library to create labels or cards without third-party RFID tag encoding software.
Ler
26 de abril de 2023

How to use RFID tags in FastReport .NET

The RFID tag is an alternative to identifying goods using barcodes. There is an exception that RFID tags use radio signals, which allows the scanning of large batches of goods in short intervals of time. Also, tags are often used to identify employees in companies. The tag contains 4 data banks: 1. The reserved data bank contains two passwords (access and kill). With the first one, it is possible to control opening and closing access to some banks or parts of the memory. The second one is required for permanent disconnection or reuse (if supported by the tag). Each password must be no longer than 32 bits.2. Electronic product code bank.3. Tag ID bank.4. User data bank. All banks except the first one can have a different volume or they can be blocked by suppliers; all of the mentioned are described in the characteristics of the tag. The data formatting standards for these banks are described in this document. For local use, one can use any data formatting convenient to the user to work with them. Label in FastReport .NET is represented as a report object. To edit it, you need to double-click on the object located on the report page in the designer. The editor is divided into tabs, each containing properties for a specific memory bank and one tab with other label options.   In the tabs of banks, you can enter static data in the fields with their names. Or you can use the data column from the data sources below. But for correct work of data substitution from a source, there must be only one data bank on the page. It is this band that will use the data source. In the reserved data bank, passwords are written only as hexadecimal numbers and 8 characters in length. Also, without a set access password (with a non-zero value), the access mode control will not work. In all other banks, you can choose to write data in either hexadecimal or ASCII-encoded string format. In addition to these fields, there are other settings. For more details, see the documentation for the ZPL format at the following link. RFID tags can be programmed by some Zebra printers, so in addition to the RFID tag object itself, their export to ZPL has been added. Note: For correct export, the RFID tag object must be in a single quantity on the page. A new page object, RFID tag at FastReport .NET, allows users to use the library to create labels or cards without third-party RFID tag encoding software.
Ler
14 de março de 2023

The Future of Report Generation with Blazor WebAssembly

Microsoft has long introduced a framework for creating an interactive web interface with C#, HTML and CSS. It comes in two versions: Server-side (Blazor Server) and Client-side (Blazor WebAssembly). WebAssembly is particular because it is executed right in the user’s browser and accesses the remote server only for the libraries required for code execution. FastReport .NET already supports Blazor technology as part of the FastReport.Web package (more). However, until now, we have only supported Server-side rendering (Blazor Server). It took us a long time to get FastReport .NET working right in the user’s browser because we needed Skia support for stable work. Starting with version 2023.2, we are pleased to announce Blazor WebAssembly support as part of the FastReport.Blazor.Wasm package. This package is available as part of a FastReport .NET Enterprise subscription and higher (including Ultimate).  Attention! Blazor WebAssembly support is currently in beta. Some reports and functionality may not work. Read the documentation and restrictions carefully before using. Creating a demo application Let’s create a test demo application to see the work of FastReport in WebAssembly. First, install WebAssembly Build Tools to build your project with WebAssembly. If it is not installed, then run the following commands on the command line, depending on the TargetFramework of your application: For .NET 6: dotnet workload install wasm-tools-net6 For .NET 7: dotnet workload install wasm-tools Now let’s create a simple Blazor WebAssembly demo project from a template. You can do this using Microsoft Visual Studio 2022 or the dotnet CLI. For simplicity, let’s use the command: dotnet new blazorwasm -n BlazorWasmDemo Let’s edit the csproj of our project and add the latest FastReport.Blazor.Wasm package: <ItemGroup> <PackageReference Include="FastReport.Blazor.Wasm" Version="2023.2.0" /> </ItemGroup> Now, if you want to prepare your report in the browser (.frx), you must disable Trimming, as it interferes with the report script compilation. You can do this in the following way: <PropertyGroup> <PublishTrimmed>false</PublishTrimmed> </PropertyGroup> Now we add the native SkiaSharp libraries as part of our application. Depending on the TargetFramework we need to add: For .NET 6: <ItemGroup> <NativeFileReference Include="$(HarfBuzzSharpStaticLibraryPath)\2.0.23\*.a" /> <NativeFileReference Include="$(SkiaSharpStaticLibraryPath)\2.0.23\*.a" /> </ItemGroup> For .NET 7: <ItemGroup> <NativeFileReference Include="$(HarfBuzzSharpStaticLibraryPath)\3.1.12\*.a" /> <NativeFileReference Include="$(SkiaSharpStaticLibraryPath)\3.1.12\st\*.a" /> </ItemGroup> In the _Imports.razor file, similarly to the Blazor Server components, add the necessary namespace to view the FastReport components: @using FastReport.Web @using FastReport.Web.Blazor.Components Register FastReport services in our DI container (file Program.cs): builder.Services.AddScoped(_ => new HttpClient{ BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); builder.Services.AddFastReport(); Note that for FastReport to work in WebAssembly, you must have a configured HttpClient in a DI container that can access root to load the necessary dlls builds. If you need to override HttpClient for your use, you can just set a separate HttpClient only for FastReport needs: builder.Services.AddFastReport(options => options.HttpClient = new HttpClient{ BaseAddress = new Uri(builder.HostEnvironment.BaseAddress)}); We have almost completed our long journey of preparing FastReport in WebAssembly, but there are just a few finishing touches. In the standard wwwroot\index.html file, we need to add the loading of js scripts for the proper work of FastReport: <script src="./_content/FastReport.Web/scripts.js"></script> Font registration FastReport must interact with the user’s fonts since FastReport works with reports and the font is an integral part of any report with text. This is what happens when the report generator runs on Windows or Linux. However, the information about installed fonts on the user’s computer becomes unavailable when FastReport runs in a browser. Thus, our application must register the fonts that we will use in our reports. In our application, we will use a font that we will embed in our library as an embedded resource (EmbeddedResource) in advance. For this, specify in our project (.csproj): <ItemGroup> <EmbeddedResource Include="Fonts\**"> <Link>Fonts\%(RecursiveDir)%(Filename)%(Extension)</Link> </EmbeddedResource> </ItemGroup> Let’s put all the fonts we need in the Fonts folder and register them in our Program.cs. Let’s create this method and call it immediately: static void AddFonts() { var resources = Assembly.GetExecutingAssembly().GetManifestResourceNames(); foreach (var resource in resources) { using var font = Assembly.GetExecutingAssembly().GetManifestResourceStream(resource); FastReport.Utils.Config.PrivateFontCollection.AddFontFromStream(font); } }   AddFonts(); Data registration That’s quite difficult. Few database connectors can work directly from the user’s browser. Therefore, we leave this to the discretion of our users. For example, you can request data from some third-party resource via HTTP and then register this data in a report before preparing it. In our application, for demonstration, we use the data from the xml file, which we put in wwwroot together with the report. Attention! Do not use this method for the final project publication because hackers can easily steal your data. Using WebReportContainer component Finally, let’s change the file Index.razor to use our WebReportContainer component. It will require the following code: @page "/" @using FastReport @using System.Data; @inject HttpClient HttpClient   @if (isReady) { <WebReportContainer WebReport="myWebReport" /> }   @code{ WebReport myWebReport; private bool isReady = false;   protected async override Task OnParametersSetAsync() { // We receive a report var reportBytes = await HttpClient.GetByteArrayAsync("Simple List.frx"); var reportStream = new MemoryStream(reportBytes); var report = Report.FromStream(reportStream);   // Get xml database and register it var dataBytes = await HttpClient.GetByteArrayAsync("nwind.xml"); var dataSet = new DataSet(); dataSet.ReadXml(new MemoryStream(dataBytes)); report.RegisterData(dataSet, "NorthWind");   // Create a WebReport and assign a report to it myWebReport = new WebReport() { Report = report, EmbedPictures = true }; isReady = true; } } Everything went well if we saw our report in the browser: As a reminder, Blazor WebAssembly currently has beta support. At the time of the 2023.2.0 build, it does not support the following: exports, online designer, database connectors, and Trimming applications (if you use frx reporting). However, we are actively working on improving our WebAssembly component. If you have any questions, write to our support at support@fast-report.com.
Ler
Fast Reports
  • 800-985-8986 (English, US)
  • +31 97 01025-8466 (English, EU)
  • +49 30 56837-3928 (German, DE)
  • +55 19 98147-8148 (Portuguese, BR)
  • info@fast-report.com
  • 66 Canal Center Plaza, Ste 505, Alexandria, VA 22314

© 1998-2025 Fast Reports Inc.