Προσωπική εμπειρία δεν έχω, ωστόσο εδώ υπάρχει ένας καλός οδηγός: http://www.howtoselectguides.com/dotnet/obfuscators/
Από εκεί και πέρα, ως προς το hasp, υπάρχει μια λύση που τον καιρό που κάναμε την κουβέντα που αναφέρεις, δεν υπήρχε: Microsoft Software Licensing and Protection Services. Είδα demo στην TechEd και μου άρεσε πολύ. Ιδιαίτερα ως προς το integration που σε ενδιαφέρει αλλά και το management. Στο παρελθόν (επί .ΝΕΤ 1.1), είχα χρησιμιποιήσει μια λύση (μου διαφεύγει το όνομα τώρα) η οποία παρότι υποστήριζε όλα τα είδη licenses που έχουμε συνηθήσει (full demo, crippled demo, time bomb, server based, user based, machine based, κλπ) έπρεπε αφενός να γράψω αρκετό κώδικα για να υλοποιήσω το καθένα και αφετέρου ήταν πολύ basic και non-automated το admin κομμάτι, τόσο που υπολόγισα ότι ο χρόνος που αφιέρωνα για έκδοση αδειών, e-mail με υπενθύμηση κωδικών, κλπ, κάποια στιγμή θα υποσκέλιζε το κέρδος μου. Έτσι, έστειλα σε όλους τους πελάτες e-mail με universal key και τελείωσε η υπόθεση.
Edit: Για overview των SLP Services δες καλύτερα εδώ: http://www.microsoft.com/SLPS/Default.aspx
Vir prudens non contra ventum mingit