Название продукта определяют для Visual C ++ и C # - PullRequest
1 голос
/ 20 января 2010

Наш продукт содержит множество модулей, распределенных по нескольким решениям Visual Studio, и использует C ++ и C #. Я хотел бы определить название продукта и использовать его как часть расположения папок по умолчанию, разделов реестра и т. Д.

Какой самый простой способ определить название этого продукта в одном месте? И если бы мне пришлось использовать разные подходы к C ++ и C #, что бы вы посоветовали для каждого из них?

Ответы [ 3 ]

0 голосов
/ 20 января 2010

Я не могу точно сказать, что было бы самым простым, но я знаю, что мы здесь сделали, и это сработало достаточно хорошо.

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

Для наших проектов на C # я использую простой класс, содержащий константы, на которые ссылаются проекты на C #.

К сожалению, это оставляет два места для техобслуживания, но на данный момент оно работает достаточно хорошо, и у нас было так мало необходимости обновлять эти определения / константы, что нам не нужно было придумывать более интегрированный подход.

Мне было бы интересно услышать другие подходы ...

0 голосов
/ 22 января 2010

Это решение, которое я постараюсь реализовать:

Каждый из C ++ и C # будет иметь свою собственную функцию для получения имени продукта, и эти функции будут иметь имя по умолчанию.

Имя по умолчанию может быть перезаписано переменной среды «PRODUCTNAME», таким образом, мы можем легко собрать наше программное обеспечение под другими именами, только изменив эту переменную среды.

[Редактировать] Моё решение на C ++ компилирует DLL, которая содержит (среди прочего) функцию:
GetProductName (char * pName, int iSize);
поэтому название продукта теперь определяется только в одном месте.

0 голосов
/ 20 января 2010

По мнению Microsoft, похоже, что вы должны иметь возможность объединить все в 1 решение, а затем иметь подрешения в этом:

Решения MSDN по структурированию и проекты

РЕДАКТИРОВАТЬ: статья предназначена для Team Foundation Server, поэтому я думаю, что вы не можете делать это обязательно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...