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