See the question and my original answer on StackOverflow

I believe you're not supposed to just copy DLL when deploying an SMO-based application. See this link: Distributing an Application That Uses SQL Server Management Objects. I quote:

If you develop an application that uses SQL Server Management Objects, you need to make sure that the necessary support files are present on the computer with the application. The SQL Server 2008 feature pack contains a redistributable package for the SQL Server Management Objects.

You will need to get the SharedManagementObjects.msi from this download link: