2016-06-28 81 views
0

我已經編寫了一個.net控制檯應用程序,它使用XML文件將一組變量加載到應用程序中。SSIS正在執行.Net控制檯作業 - 相對路徑

在測試過程中,我使用存儲在共享驅動器上的UNC文件路徑硬編碼.xml文件的絕對路徑。 \\ sharepath \ config.xml

但是,我們希望從SSIS調用application.exe文件,我們可以做得非常好,我們繼續在應用程序中使用硬編碼路徑,但是當我將其更改爲一個相對路徑(config.xml)失敗,因爲它找不到配置文件。

有誰知道爲什麼這不起作用? - 我讀過關於SSIS工作目錄的一些信息,並且不確定是否由於某種原因,它在與使用ssis包中的執行應用程序任務指定的位置不同的位置運行.exe文件?

我基本上試圖避免將文件路徑硬編碼到應用程序中,以便我們可以更改它是未來文件共享更改的名稱。

謝謝

+0

在* all *應用程序中,您必須設置工作目錄。如果你在'C:\'並執行'c:\ somefolder \ myapp.exe',你的工作目錄是'c:\',而不是'c:\ somefolder'。當然,最好的選擇是將文件的路徑作爲參數傳遞,而不是硬編碼。無論如何,在「執行任務」步驟中設置你的應用程序的工作目錄步驟 –

+0

嗨Panagiotis,感謝您的輸入,您確定它是應用程序用作相對路徑的工作目錄。當我們把配置文件放在這個文件夾中時,它會讀取它並按預期工作。 - 無法接受你的答案,因爲它是在評論空間。 – user2916488

回答

0

我也被這個咬了。 工作目錄不在dtsx文件所在的位置,而是DETEXEC.exec(或DTEXEC_Util.exe)所在的位置。 這將是類似於 C:\ Program Files文件(x86)\ Microsoft SQL Server \ 110 \ DTS \ Binn 我懷疑你想把你的配置到這個位置... 你最好的選擇是建立一個SSIS配置XML文件的位置,然後在加載文件時使用它(大量示例在那裏......)

+0

謝謝,我們通過將config xml放入執行進程任務中定義的自定義工作文件夾中來解決此問題。我們不想通過將變量傳遞給應用程序來使其複雜化。 – user2916488