#
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.TrimHelper
NuGet 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.TrimHelper
Alternatively, 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
TrimHelper
assembly:<ItemGroup> <TrimmerRootAssembly Include="TrimHelper" /> </ItemGroup>
Read More: Root Assemblies
Alternatively Update the Link XML File
Add the following configuration to your
link.xml
file:<assembly fullname="TrimHelper"> <type fullname="*" preserve="all"/> </assembly>
Read More: Root Descriptors
Below is an example
link.xml
file 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.