来自输出目录的Delphi XE2主机应用程序

来自输出目录的Delphi XE2主机应用程序,delphi,environment-variables,executable,delphi-xe2,Delphi,Environment Variables,Executable,Delphi Xe2,有没有办法告诉构建DLL的Delphi项目将可执行文件用作宿主应用程序,该可执行文件位于与所构建DLL的输出目录相同的目录中 大概是这样的: 一件事是,我在Delphi XE2中使用选项集,因此在我构建的DLL的dproj中,我甚至没有DCC_EXEOUT目录,不确定这是否重要 允许这样做会使我们在尝试从VSS迁移到SVN时遇到的一些问题变得非常复杂 还有,你把$(东西)叫做什么?东西是环境变量。我尝试将主机应用程序设置为\$(平台)\$(配置)\Test.exe,并收到以下错误消息: Cou

有没有办法告诉构建DLL的Delphi项目将可执行文件用作宿主应用程序,该可执行文件位于与所构建DLL的输出目录相同的目录中

大概是这样的:

一件事是,我在Delphi XE2中使用选项集,因此在我构建的DLL的dproj中,我甚至没有DCC_EXEOUT目录,不确定这是否重要

允许这样做会使我们在尝试从VSS迁移到SVN时遇到的一些问题变得非常复杂

还有,你把$(东西)叫做什么?

东西是环境变量。我尝试将主机应用程序设置为
\$(平台)\$(配置)\Test.exe
,并收到以下错误消息:

Could not find program, '.\%Platform%\%Config%\Test.exe'.
Could not find program, 'C:\Test.exe'.
请注意,
$(…)
是如何转换为环境变量语法的

我还尝试了
$(systemdrive)\Test.exe
,并收到以下错误消息:

Could not find program, '.\%Platform%\%Config%\Test.exe'.
Could not find program, 'C:\Test.exe'.
因此,很明显,如果环境变量确实存在,它们的值将被替换。我认为有理由得出这样的结论:用于启动主机应用程序的环境显然没有定义特定于Delphi的特殊环境变量

因此,我认为您的问题的答案是,您不能像这样在主机应用程序设置中使用间接寻址


另一方面,环境变量被替换,所以也许您可以使用它使事情变得更简单。换句话说,您可以定义自己的一些环境变量。我不知道这是否会对您有所帮助,因为我不知道您的问题的确切细节。

嗯,这似乎都是真的,但您可能会认为我可以使用MSBuild将运行的预链接生成事件设置这些事件。这样我就可以做一些事情,比如
set-outdir=..\debug\final
。这似乎不起作用。我可以看出Delphi环境变量和Windows环境变量之间存在差异,只是在调用它们时不明显。我的心理模型是,主机应用程序设置在生成后应用,因此所有的生成变量都不再适用。但那只是猜测。使用toolsapi的IDE插件可能会获得回报,特别是因为我们已经证明了env变量是扩展的。