This is a known issue. SMO's usage against .Net 4.0 hasn't been signed off or announced by Microsoft. We will have to wait for an update or a new version of SQL Server. In the meantime, this can only work by creating a MyEXEName.exe.config file in the application directory having this:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" />
</startup>
<runtime>
<generatePublisherEvidence enabled="false" />
</runtime>
</configuration>