2011-10-21 1 views
1

사용자 지정 SSIS 작업을 작성합니다. 작업에서 일부 스크립트를 실행합니다. 이들은 프로젝트/하위 폴더 /에 있습니다.사용자 지정 작업을위한 프로젝트 디렉터리 가져 오기 SSIS

Directory.GetCurrentDirectory(); 

반환 : 나는 BIDS에서 내 작업을 디버깅 할 때

이제 문제는 C:\Program Files (x86)\Microsoft Visual 9.0\Common7

을하지만 (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

- 전체 비주얼 스튜디오 프로젝트는 일반적으로 배치되지 않기 때문에 의미가 있습니다, 패키지와 함께. 그리고 "현재 디렉토리"의 개념은 소스 코드가 어디에 있지 않고 실행 파일이 실행되는 위치를 기반으로하기 때문에 도움이되지 않습니다.

그러나 (일종의) 간단한 해결 방법이 있습니다.

  1. 은 스크립트 폴더에 절대 경로에 대한 귀하의 사용자 지정 작업에 속성을 추가합니다. 사용자 지정 작업을 사용하여 SSIS 패키지에서
  2. 는, 패키지 변수의 값에 해당 속성을 설정하고 구성 파일에서 해당 변수를 얻을 수있는 패키지를 구성 (.dtsconfig)
  3. 다음 중 하나를
    • 에서 당신의 Visual Studio 솔루션에서 다른 C# DLL 프로젝트를 추가하십시오. 그것에 코드가있을 필요는 없습니다. 대신 프로젝트의 빌드 이벤트 속성 페이지에서 2 단계에서 .dtsconfig 파일을 생성하고 $(SolutionDir)/project/scripts 매크로를 인수로 전달하는 스크립트를 호출하십시오. 또는
    • 수동으로 내가 BIDS에서 디버깅 할 때 불행하게도이 반환 스크립트가
-1

사용 : 비주얼 스튜디오 프로젝트에서 특정 폴더에 대한 상대 경로 얻기 위해 SSIS 내 방법이 없습니다

Environment.CurrentDirectory 
+0

폴더에 절대 경로로 구성 값을 설정 'C : \의 Program Files (x86) \의 Microsoft Visual 9.0 \ Common7 \ IDE' ... VS : C : \ Users \ nwadike \ Documents \ Visual Studio 2008 \ Projects \ BloombergRequest \ BloombergRequest \ bin \ Debug' ... – nche

관련 문제