Действительно ли возможно переименовать имя пространства имен в существующем API, не взламывая пользовательский код?
нет, это невозможно. Лучшее, что вы можете сделать, это переименовать пространство имен в одном файле: http://msdn.microsoft.com/en-us/library/sf0df423(VS.80).aspx
Можно ли переименовать пространство имен имя в существующем API без нарушение пользовательского кода?
Если вы измените пространство имен, в котором находится объект, он нарушит код, который на него ссылается.
Вы можете создать кучу объектов в старом пространстве имен, которые просто делегируют свои вызовы новым объектам (прозрачные прокси по сути), а затем в какой-то момент в будущем обесценить объекты прокси.
Возможно, это довольно ужасно, в зависимости от размера/сложности вашей кодовой базы.
Лучшим вариантом может быть просто нетехническое предупреждение пользователей об изменении пространства имен API заблаговременно до его выпуска. Если они активно разрабатывают клиентов, то поиск/замена не станет для них концом света.
Если значительное число клиентов НЕ активно разрабатывают, то вам придется некоторое время продолжать ветку сопровождения/исправления ошибок со старым пространством имен.
Если у вас есть доступ к коду вызывающего API, вы можете использовать псевдоним для ссылки на ваше новое пространство имен.
Таким образом, с точки зрения вызывающего API, никаких изменений не произойдет.