  In the article " urlLink Porting SmartPlugin to .NET " I wrote about the main purpose of this blog. Now, continuing the saga... T his is what I have managed to port so far: A do-nothing component set ( urlLink TatsSpi , urlLink TatsSpiMan ) inherited (as on Win32) from urlLink TatsSpiBase (which inherits from TDataModule ).
This I could do without losing anything, although it's been a nightmare to get a TDataModule-based component to work on .NET. As on Win32, the manager ( urlLink TatsSpiMan ) can either be droped onto a surface or instantiated as a pure datamodule (like a plugin) - yes, this already works on Win32, just not documented. The two distinct (designtime and runtime) packages approach has been kept - had some headaches here too.
The runtime package ( atsSPI3000rp80 . dll ) resides on the GAC ( G lobal A ssembly C ache ), so there's no need for it to be installed to Windows system folder. The Tool Palette shows a custom bitmap for the manager component, as on Win32. The runtime unit ( urlLink atsSPIru ) remains the same (no AthraSoft.VCL.SmartPlugin namespace or similar, because I need the sources to go in the same file " urlLink atsSPIru .pas", in both Win32 and .NET versions).
This will be useful to users while porting old projects, as there's no need to change projects' uses clause. The plugin registration statical function ( RegisterSmartPlugin ) is now (on .NET only) a method in a new, small class ( TatsSmartPluginRegistrar ), because .NET's urlLink Activator.CreateInstance cannot handle statical routines, just classes. Also, the object returned is no longer of the type of your plugin, but a pure urlLink TatsSpi object. See urlLink how your code will look like (targeting both platforms at once). Some snapshots: urlLink Manager component (TatsSpiMan) dropped (at design-time) onto a form .
urlLink Manager component (TatsSpiMan) on the Tool Palette . urlLink SmartPlugin runtime package on the Reflection tool . urlLink SmartPlugin runtime package in the GAC (Global Assembly Cache) . urlLink Plugin loaded and initiazed (runtime) by manager . Code Snipets: The plugin registration function urlLink RegisterSmartPlugin . 
