#
Trimming Problems
When protecting .NET projects with .NET Reactor, the injected protection algorithms may reference classes or members. If the project is deployed using the trimming option (e.g., for optimizing application size during publishing), these references might point to removed elements, leading to runtime errors or broken functionality.
#
Solution
To ensure that the necessary classes and members are preserved during the trimming process, you can use the Eziriz.Reactor.TrimHelper NuGet package and provide additional configuration in your project.
#
Steps to Resolve
Install the NuGet Package
Add the
Eziriz.Reactor.TrimHelperNuGet package to your project. This package ensures the required classes and members used by the protection algorithms are not trimmed.dotnet add package Eziriz.Reactor.TrimHelperAlternatively, you can install it via the NuGet Package Manager in your IDE.
NuGet Package Link: Eziriz.Reactor.TrimHelper
Update the project file
Add the following configuration to your project file (.csproj, .vbproj...) file to explicitly preserve all types and members within the
TrimHelperassembly:<ItemGroup> <TrimmerRootAssembly Include="TrimHelper" /> </ItemGroup>Read More: Root Assemblies
Alternatively Update the Link XML File
Add the following configuration to your
link.xmlfile:<assembly fullname="TrimHelper"> <type fullname="*" preserve="all"/> </assembly>Read More: Root Descriptors
Below is an example
link.xmlfile with the required entry forTrimHelper:<linker> <assembly fullname="TrimHelper"> <type fullname="*" preserve="all"/> </assembly> </linker>
#
Why This is Necessary
The trimming process removes unused code to reduce the application size. However, .NET Reactor's protection algorithms may rely on specific classes or members being available at runtime. Using the Eziriz.Reactor.TrimHelper package and updating project file (or link.xml) ensures these critical elements are preserved.
By following the steps above, you can safely use .NET Reactor with projects that utilize trimming without encountering runtime issues.