如何将工作目录设置为“解决方案目录”?

Posted

技术标签:

【中文标题】如何将工作目录设置为“解决方案目录”?【英文标题】:How do I set the working directory to the "solution directory"? 【发布时间】:2011-01-27 10:56:25 【问题描述】:

我想将当前目录设置为解决方案目录/配置名称。我怎么做?我可以以某种方式使用全局变量吗?

我正在尝试读取一个文件,并且当前目录在代码中间发生了变化。我想改回来。

【问题讨论】:

【参考方案1】:

在 Visual Studio 2010 中:

    转到项目属性(右击解决方案资源管理器中的项目名称,然后在弹出菜单上单击属性)。 然后,在配置属性/调试下,将工作目录设置为$(SolutionDir)$(Configuration)\

可用宏的完整列表(在 docs.microsoft.com 上):Common macros for MSBuild commands and properties

【讨论】:

在我的 Visual Studio 2017 15.9.10 中对我不起作用 - 说 The working directory you entered does not exist。即使我保存它,我也会得到The working directory does not exist: '...\bin\Debug\$(SolutionDir)$(Configuration)\'. 这个答案帮助我查找可用宏的列表,我在 docs.microsoft.com 上找到了该列表:Common macros for MSBuild commands and properties。就我而言:我正在寻找$(ProjectDir)\ @Jonathan:我也有这个——这里没有宏。你找到解决办法了吗?【参考方案2】:

您可以使用 posix 子系统 (<direct.h>) 并访问功能

_getcwd()/_wgetcwd() 获取当前工作目录_chdir()/_wchdir() 设置当前工作目录

如果您需要您的代码是跨平台的,您可以执行以下操作:

#ifdef _WIN32
#  include <direct.h>
#  define getcwd _getcwd
#  define chdir _chrdir
#else
#  include <unistd.h>
#endif

并使用getcwdchdir(不带前导下划线)。

【讨论】:

【参考方案3】:

您是否尝试过使用环境变量$(SolutionDir)

参考本帖here。

另外,希望 VS 的版本无关紧要,但这个答案是基于平台是 VS2005 的假设提供的。

【讨论】:

【参考方案4】:

如果您的当前目录正在更改,您可能应该在启动时将工作目录保存在某个变量中,您可以稍后访问以将 cwd 设置回那里。至少我是这样理解你的问题的。

为了获得 cwd,this 可能会有所帮助。

【讨论】:

【参考方案5】:

    对于 Visual Studio 目的(包括标头等),您可以使用此处列出的 $(ProjectDir)$(SolutionDir) 之类的宏:VS macro list

    要读取应用程序代码中的文件,请使用 Windows API 函数 GetCurrentDirectory,它会检索您的 进程 目录的路径。编译后的代码可能独立于项目而存在,因此相对于进程 (exe) 引用数据文件的路径是有意义的。

似乎问题的作者询问了第二项,而其他人则回答了第一项。

【讨论】:

以上是关于如何将工作目录设置为“解决方案目录”?的主要内容,如果未能解决你的问题,请参考以下文章

Xcode:如何将当前工作目录设置为可执行文件的相对路径?

R语言如何更改工作目录??

如何为 MS Test 项目设置工作目录

如何在 Jenkins 节点上设置工作区根目录?

R语言---快速设置切换工作目录

如何设置当前工作目录? [复制]