Question: We have a dll that is a plug-in for a asp.net shopping cart software that customers can purchase. However, we want to lock that dll to a particular domain for security reasons and we don't want them to be able to read that dll or use that dll in another domain they may have. How can we do this?

Answer: 
Brainstorming:

* Hard-code a domain-check into the dll's main function and compile a new dll for each customer (ok, not scalable)
* Distribute a license file with the dll that stores the valid domain for the dll, encrypted. Have your DLL check for the file, decrypt the contents, and fail if the file is missing or the current domain doesn't match the encrypted domain.
* Have the DLL "phone-home" to one of your servers over encrypted line asking your server whether the current domain the dll is running in is acceptable. Your server responds 'yes' or 'no' and the DLL either runs or doesn't.
The DLL could look at the incoming request's host header.