Я не могу точно сказать, что было бы самым простым, но я знаю, что мы здесь сделали, и это сработало достаточно хорошо.
Для проектов на C ++ у нас есть общий заголовочный файл, который содержит #defines для всех распространенных нелокализуемых строк, используемых приложениями (ProductNames, CompanyName, Version, ключи реестра, префикс / расширение файла и т. Д.). И отдельный проект просто включает и ссылается на эти определения. Я использовал определения, а не константы, потому что таким образом я мог бы также изменить все ресурсы Version для ссылки на те же определения без каких-либо проблем (фактически, все файлы .rc проекта включают один и тот же version.rc, чтобы гарантировать единообразие).
Для наших проектов на C # я использую простой класс, содержащий константы, на которые ссылаются проекты на C #.
К сожалению, это оставляет два места для техобслуживания, но на данный момент оно работает достаточно хорошо, и у нас было так мало необходимости обновлять эти определения / константы, что нам не нужно было придумывать более интегрированный подход.
Мне было бы интересно услышать другие подходы ...