Сценарий
У меня есть две оболочки вокруг Microsoft Office, одна для 2003 года и одна для 2007 года. Поскольку две версии Microsoft Office работают бок о бок "официально не возможно" и не рекомендуются Microsoft, у нас есть две коробки, одна с Office 2003 а другой с Office 2007. Мы компилируем обертки отдельно. DLL включены в наше решение, каждый блок имеет одинаковую проверку, но с Office 2003 или 2007 "выгружен", поэтому он не пытается компилировать эту конкретную DLL. Невыполнение этого условия приведет к возникновению ошибок при компиляции из-за недоступности библиотек Office COM.
Мы используем .NET 2.0 и Visual Studio 2008.
Факты
Так как Microsoft загадочным образом изменила API Office 2003 в 2007 году, переименовав и изменив некоторые методы ( sigh ), тем самым сделав их несовместимыми с предыдущими версиями, нам потребуется две оболочки.
У нас есть каждая сборочная машина с активированным решением и одна Office DLL. Например: на компьютере с Office 2003 выгружена DLL-библиотека "Office 2007", поэтому она не компилируется. Другая коробка - та же самая идея, но наоборот. Все это потому, что у нас не может быть двух разных Office в одной коробке для целей программирования. (технически вы могли бы иметь два Office вместе, согласно Microsoft), но не для программирования и не без некоторых проблем.
Задача
Когда мы меняем версию приложения (например, с 1.5.0.1 на 1.5.0.2), нам нужно перекомпилировать DLL, чтобы она соответствовала новой версии приложения, это автоматически выполняется, поскольку в решение включена оболочка Office. , Поскольку в решении содержатся обертки, они наследуют версию APP, но мы должны сделать это дважды, а затем «скопировать» другую DLL на компьютер, который создает установщик. (Боль ...)
Вопрос * * 1023
Можно ли скомпилировать DLL, которая будет работать с любой версией приложения, несмотря на то, что она "старше"? Я читал кое-что о манифестах, но мне никогда не приходилось взаимодействовать с ними. Любые указатели будут оценены.
Секретная причина этого заключается в том, что мы не меняли наши обертки «в возрасте», равно как и Microsoft с их древними API, но мы перекомпилируем DLL, чтобы соответствовать версии приложения в каждом выпуске. мы делаем. Я хотел бы автоматизировать этот процесс вместо того, чтобы полагаться на две машины.
Я не могу удалить DLL из проекта (ни одну из них), потому что есть зависимости.
Я мог бы создать третью "мастер-оболочку", но пока не думал об этом.
Есть идеи? Кто-нибудь еще с таким же требованием?
UPDATE
Разъяснение:
У меня есть 1 решение с N проектами.
«Приложение» + Office11Wrapper.dll + Office12Wrapper.dll.
Обе "оболочки" используют зависимости для приложения + другие библиотеки в решении (слой данных, бизнес-уровень, фреймворк и т. Д.)
У каждой оболочки есть ссылки на соответствующий пакет Office (2003 и 2007).
Если я скомпилировал и не установил Office 12, я получаю ошибки от Office12Wrapper.dll, не находящего библиотеки Office 2007.
Итак, у меня есть две сборочные машины, одна с Office 2003, другая с Office 2007. После полного обновления SVN + компиляции на каждой машине мы просто используем office12.dll в «установщике», чтобы скомпилировать оболочку с «той же код, та же версия ".
Примечание. Машина сборки Office 2007 с «выгруженным» оберткой для Office 2003 и наоборот.
Заранее спасибо.