2016-06-28 83 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