Получить каталог проекта для пользовательской задачи SSIS - PullRequest
1 голос
/ 21 октября 2011

Я создаю пользовательскую задачу SSIS. В задании я запускаю несколько скриптов. Они находятся в проекте / в подпапке скриптов /.

Теперь проблема в том, когда я отлаживаю свою задачу из BIDS:

Directory.GetCurrentDirectory();

возвращает: C:\Program Files (x86)\Microsoft Visual 9.0\Common7

Но если я запускаю / отлаживаю из Visual Studio (с DTExec), я получаю:

C:\Users\nwadike\Documents\Visual Studio 2008\Projects\BloombergRequest\BloombergRequest\bin

Теперь, если я использую: System.Reflection.Assembly.GetCallingAssembly().Location, Я получаю: C:\Windows\assembly\GAC_MSIL\BloombergRequest\versionNum\BBG.dll отлаживаю ли я от SSIS или Visual studio ...

В основном я ищу, как получить относительный путь к проекту \ scripts \ .... Как это возможно?

Ответы [ 2 ]

2 голосов
/ 23 октября 2011

В SSIS нет способа получить относительный путь к определенной папке в проекте Visual Studio - это имеет смысл, поскольку весь проект Visual Studio обычно не развертывается с пакетом.И, как вы заметили, концепция «текущего каталога» не помогает, поскольку она основана на том, откуда запускается исполняемый файл, а не на том, где живет исходный код.

Однако есть (вроде) простой обходной путь.

  1. Добавьте свойство к своей пользовательской задаче для пути абсолютный к папке сценариев.
  2. В пакете служб SSIS, использующем пользовательскую задачу, установите это свойство назначение переменной пакета и настройте пакет для получения этой переменной из файла конфигурации (.dtsconfig)
  3. Либо:
    • В своем решении Visual Studio добавьте еще один проект C # DLL.Это не должно иметь никакого кода в нем.Вместо этого на странице свойств проекта Build Events вызовите скрипт, который генерирует файл .dtsconfig на шаге 2, и передайте макрос $(SolutionDir)/project/scripts в качестве аргумента; или
    • Вручную задайте в качестве значения конфигурации абсолютный путь к вашей папке скриптов
0 голосов
/ 21 октября 2011

использование:

Environment.CurrentDirectory
...