Набор программных продуктов отличается только их строками ресурсов, бинарными ресурсами и клавишами строк/графики/продуктов, используемыми их проектами установки Visual Studio. Каков наилучший способ их создания, организации и поддержки?
то есть. Все продукты по существу состоят из одной и той же функциональности ядра, настраиваемой графикой, строками и другими данными ресурсов для формирования каждого продукта. Представьте, что вы создаете набор продуктов, таких как "Excel для банкиров", Excel для садоводов "," Excel для руководителей "и т.д. Каждый продукт имеет одинаковую функциональность, но отличается именем, графикой, файлами справки, включенными шаблонами и т.д.
Среда, в которой они создаются, является: vanilla Windows.Forms/Visual Studio 2008/С#/.Net.
Идеальное решение было бы легко поддерживать. например Если я представлю новые проекты с новыми/новыми ресурсами, я не добавил, что ресурс должен завершиться неудачно во время компиляции, а не запускать время. (И последующая локализация продуктов также должна быть осуществимой).
Надеюсь, я пропустил ослепительно-очевидный и простой способ сделать все это. Что это?
============ Уточнение =================
Под "продуктом" я подразумеваю пакет программного обеспечения, который устанавливается установщиком и продается конечному пользователю.
В настоящее время у меня есть одно решение, состоящее из нескольких проектов (включая проект установки), который создает набор сборок и создает один установщик.
Мне нужно создать несколько продуктов/инсталляторов, все с похожими функциями, которые построены из одного и того же набора сборок, но отличаются набором ресурсов, используемых одной из сборок. Какой лучший способ сделать это?
------------ 95% -ное решение -----------------
На основе ответа Daminen_the_unbeliever файл ресурсов для каждой конфигурации может быть достигнут следующим образом:
- Создайте проект библиотеки классов ( "Спутник" ).
- Удалить файл .cs по умолчанию и добавить папку ( "По умолчанию" )
- Создайте файл ресурсов в папке "MyResources"
- Свойства. Задайте значение CustomToolNamespace. (например, "XXX" )
- Убедитесь, что модификатор доступа для ресурсов "Public". Добавить ресурсов. Отредактируйте исходный код. Обратитесь к ресурсам вашего кода. как XXX.MyResources.ResourceName)
- Создание конфигураций для каждого варианта продукта ( "ConfigN" )
- Для каждого варианта продукта создайте папку ( "ВариантN" )
- Скопируйте и вставьте файл MyResources в каждую папку VariantN
- Выгрузите проект "Спутник" и отредактируйте файл .csproj.
- Для каждого тега "VariantN/MyResources"
<Compile>
или<EmbeddedResource>
добавьте атрибутCondition="'$(Configuration)' == 'ConfigN'"
. - Сохранить, перезагрузить .csproj, и все готово...
Это создает файл ресурсов для каждой конфигурации, который (предположительно) может быть локализован. Компилировать сообщения об ошибках создаются для любой конфигурации, где отсутствует ресурс. Файлы ресурсов могут быть локализованы с использованием стандартного метода (создайте второй файл ресурсов (MyResources.fr.resx) и отредактируйте .csproj, как и раньше).
Причина, по которой это решение составляет 95%, заключается в том, что ресурсы, используемые для инициализации форм (например, титры форм, тексты кнопок), не могут быть легко обработаны одинаково - самый простой подход заключается в том, чтобы переписать их значениями из спутниковая сборка.