SmartAssembly - 6.5
Error reporting and DLLs - SmartAssembly
Using error reporting with DLLs and an executable
To use error reporting with DLLs when you have your own executable, just enable error reporting on both the .exe and the .dll in the SmartAssembly user interface.
Using error reporting with DLLs where you do not have an executable
You can use error reporting in a DLL without applying error reporting to an executable (for example, if your product is DLLs which your customers include in their assemblies).
To add error reporting to a DLL without an executable, you must slightly modify the DLL, using either of the following methods:
Method 1: Using SmartAssembly.ReportException.dll
This method involves calling the SmartAssembly Report Exception DLL from inside your DLL.
This is the preferred method, but it requires the SmartAssembly SDK (available in SmartAssembly Professional only).
- Reference the dependency %ProgramFiles%\Red Gate\SmartAssembly 6\SDK\bin\SmartAssembly.ReportException.dll (this dependency will be removed when processed).
- For any public method of your DLL that can throw an exception which you wish to report, add a call to
ExceptionReporting.Reportas follows:using SmartAssembly.ReportException;public class MyClass{private void DoSomethingInternal(){//Your code here}public bool DoSomething(){try{DoSomethingInternal();return true;}catch (Exception exception){ExceptionReporting.Report(exception);return false;}}}
If your application is a Silverlight application and this method does not work, you must report exceptions manually. See Error reporting with Silverlight.
Method 2: Creating a DLL with an entry point
This alternative method requires your DLL to have a specific entry point (most commonly add-ins and some web services). It involves changing your DLL so that it behaves similarly to an executable. This allows SmartAssembly to receive the exception as it will be passed to the Main() method.
This method might not work in all cases, since it will depend on the design of your application.
- Create a Console application executable file instead of a DLL. The only difference between the two is that the Console application has an entry-point.
- Do not type any code in the
Main()method, SmartAssembly will add its own code in this here. - In the static constructor of your plug-in class, call the
Main()method.class Program{static void Main(){//empty}}class MyPlugin : IPlugin{static MyPlugin(){//ensure that sa initialization is executedProgram.Main();}//your code here...} - When you have finished writing the DLL code, rename the file from [filename].exe to [filename].dll.
- Use SmartAssembly to merge the DLL into your assembly.
Was this article helpful?
SmartAssembly
- Using Smartassembly to obfuscate a windows service
- Obfuscation not renaming identically-named methods in different classes
- Serialization exceptions occurring in obfuscated assemblies
- SmartAssembly skipping obfuscation of some classes in your assembly
- SmartAssembly is not merging or embedding all assembly dependencies
- Can I customize the path to the MDB database?
- System.InvalidOperationException when attempting to connect to local SmartAssembly database
- Protecting website code using SmartAssembly
- Visual Studio Deployment Projects including unprotected builds
- SmartAssembly MSBUILD tasks failing because of difference in log4net assembly
- SmartAssembly Error Reporting: This application has submitted too many reports
- The assembly is being merged, but the dependent assembly isn't
- ERR 2002: Server did not recognize the value of HTTP Header SOAPAction
- The error report is not associated with a valid project ID - SmartAssembly
- Application built with an evaluation edition of SmartAssembly
- How end users can change their participation in Feature Usage Reporting
- Log file for SmartAssembly
- Moving SmartAssembly to another computer
- 'Using JET databases is not possible in 64-bit applications' error when using MSBuild or TFS
- SmartAssembly stack trace is invalid when Method Parent Obfuscation is enabled
- Upgrading SmartAssembly version 4.x to version 5
- Upgrading SmartAssembly Standard to Professional
- Problems building WPF applications with SmartAssembly 6.7
all products
- Some Red Gate products identified as containing a trojan by Anti-Virus software
- Activation may fail with Unknown Error -1
- Product uses web help although a CHM file is available locally
- Argument exception resulting from missing environment variable
- Check for updates may fail when used through proxies
- 'Unidentified Publisher' error when repairing or uninstalling
- Licensing activates product as standard edition
- Moving Red Gate software products to another machine
- Red Gate tools log locations
- The application UI opening slowly when there is no internet access
SmartAssembly
all products
- Red Gate product acknowledgements
- Activating your products
- Activating your products
- Red Gate bundle history
- Check for updates
- Troubleshooting Check for Updates errors
- Current versions
- Deactivating your products
- Installing Red Gate products from the .msi file
- Requesting additional activations
- Serial numbers for bundles
- Reactivating using a different serial number
- Extending your trial
- Finding your serial numbers
- Moving a serial number from one computer to another
- No response received for manual activation
- Licensing and activation resources
- Licensing and activation resources
- Troubleshooting licensing and activation errors
- Licensing and activation FAQs
- Red Gate tools log file locations
- Download old versions of products
- Download product prerequisites & utilities
- Support & upgrades
- Upgrading your software
- Upgrading FAQs

Using SmartAssembly for obfuscation