Я не могу понять, почему вы захотите выйти из C # и .NET по той единственной причине, что вы не хотите "причинять неудобства" своим клиентам, требуя от них установки .NET Framework.
Например, в наши дни .NET включен в Windows. В XP (текущие пакеты обновлений) вы получаете .NET 2.0. В Vista вы получаете .NET 3.0. Если предположить, что вы на самом деле не используете никаких возможностей .NET 3.5 и не нуждаетесь в каких-либо возможностях C # 3.0, то аргумент «неудобства для клиента» довольно спорный. Им не нужно ничего скачивать или устанавливать что-то еще ... его уже там.
В том случае, если вам действительно требуется .NET 3.5 и / или C # 3.0, создать готовый установщик для ваших клиентов, который позаботится обо всем этом, будет нелегко. Нет никаких реальных "неудобств" для клиентов, потому что они все равно должны установить вашу программу. Одна установка может позаботиться как о вашей программе, так и обо всех ее зависимостях в едином, бесшовном и прозрачном процессе установки. Если вы хотите, чтобы ваши клиенты были еще проще, у вас есть возможность развертывания в один клик с .NET, C # и Visual Studio. Это создаст простой сайт для ваших клиентов, который позволит им легко и быстро загружать и устанавливать ваше приложение, а также обновлять его при публикации будущих обновлений. Этот тип развертывания также обеспечивает загрузку и установку любых зависимостей в клиентскую систему, что необходимо выполнить только один раз (для всех последующих обновлений требуется только загрузить и установить последнюю версию измененных сборок.)
Как уже упоминалось, у C # и .NET есть что предложить. Microsoft создала обширную экосистему для разработки на платформе .NET с огромным количеством ресурсов, инструментов, документации и помощи сообщества. C # - очень чистый, современный, ориентированный на будущее язык, предлагающий множество инструментов, которые помогут вам и вашим разработчикам решать проблемы максимально быстро, просто и эффективно. Переход на C ++ означает, что вы не только потеряете эти полезные достижения, но и унаследуете кошмар ручного управления памятью. Переход на Java означает, что вы теряете эти полезные усовершенствования, но, как правило, тоже не получаете полезных. Вы можете перейти на другие языки .NET, но тогда не решите единственную проблему, о которой вы упомянули: зависимость ваших клиентов от .NET framework.
Если у вас уже есть система, разработанная на C #, я бы сказал, ничего не меняйте. Вы будете много терять, и не получите ничего, что могло бы значительно повлиять на ваших клиентов. В конечном счете, любое изменение, скорее всего, окажет гораздо более значительное влияние на вашу компанию и ваших разработчиков. Вы будете иметь затраты на переписывание или преобразование кода, затраты на обучение ваших разработчиков на новом языке и, возможно, на новой платформе разработки, затраты на поиск и исправление ошибок, которые, вероятно, уже были исправлены в вашей текущей кодовой базе, и список можно продолжить ...
Вам нужно узнать больше о том, что может предложить .NET, прежде чем вы решите, что это слишком неудобно для ваших клиентов. И вы должны убедиться, что это действительно неудобство для ваших клиентов, прежде чем принять решение о столь радикальных и дорогостоящих изменениях.