¿Cómo puedo construir un componente o una biblioteca de clases que me sirva indistintamente para Windows Forms y para ASP.NET si debo usar características específicas de cada entorno?
Expresado con otras palabras: ¿Cómo puedo saber si mi componente está siendo usado desde una aplicación de Windows Forms o de ASP.NET?
Respuesta: verifica el valor de HttpContext.Current.
Si es null (Nothing en VB) es que estás en un entorno no-web, y estarás bajo ASP.NET en caso contrario.
Es un truco sencillo pero que a alguno puede que le resulte útil si se lo había planteado para algún componente propio.