2010-07-15 2 views
2

Я разрабатываю компонент SSIS и пытаюсь создать способ сохранить единую исходную кодовую базу при создании целей как для версий 2005, так и для 2008.Разработка компонента SSIS: один источник, несколько целей

У меня проблема в две части:

  • референции моего проекта для v2005 версии точка использовать различные .NET DLL, чем V2008 (то есть различные версии одного и того же библиотеки DLL).
  • Класс, который я использую в v2005, будет иметь немного другое имя в v2008 (даже , хотя он имеет те же функциональные возможности и открытый интерфейс).

Проблема 1 Я могу иметь дело с, я не против иметь проект для каждой целевой версии с разными ссылками. Задача 2 не так проста. Для иллюстрации коллекция пользовательских свойств v2005 называется IDTSCustomPropertyCollection90, тогда как коллекцию v2008 называется IDTSCustomPropertyCollection100.

Если я пытаюсь использовать DLL v2005 в SSIS 2008, класс -90 не будет найден, и то же самое относится к классу -100, если я попытаюсь использовать DLL v2008 в SSIS 2005. Как я работаю с этот класс абсолютно одинаковый для обеих версий v2005 и v2008, за исключением 90/100.

Если бы я кодирования в C++, я создал файл .h, где я создать серию #defines в квадрат это далеко:

#if defined(VS2005BUILD) 
    #define IDTSCustomPropertyCollection IDTSCustomPropertyCollection90 
#else 
    #define IDTSCustomPropertyCollection IDTSCustomPropertyCollection100 
#endif 

Но это, кажется, не возможно в C#. Идеи?

+1

Если кому-то интересно, я закончил это с помощью # using (см. Мой другой вопрос http://stackoverflow.com/questions/3418994/interface-inheritance-and-casting) –

+0

Спасибо, Марк! Я ждал и смотрел этот вопрос ... Сделайте следующего парня в пользу и добавьте ответ на этот вопрос в этот поток (а не комментарий) и отметьте его как ответ. –

ответ

1

вы можете попробовать использовать другой интерфейс между этими и вашим кодом, а затем загрузить соответствующий из конфигурации или что-то еще.

+0

Я рассматривал возможность написания пар классов-оболочек (есть несколько с этой проблемой), а затем с помощью набора, подходящего для этой сборки. Но есть много классов с этой проблемой, и я надеялся на более легкое решение. –

Смежные вопросы