Я бы вместо условной компиляции написал бы P/Invoke трех функций и вызвал бы нужную в зависимости от версии AutoCAD (Application.Version). Но это на любителя... Что касается замены кода, то акцентирую внимание на то, что ты принудительно подменяешь код, который был ранее. Если в коде были обработчики событий, то (так как ты их не отключаешь), они будут ссылаться на старые, заменённые тобой функции. А это значит, что крах неизбежен. Так что будь очень осторожен.