使用VS 2017。我只是花了相当多的时间想知道为什么相对路径不工作时,运行我的应用程序在调试会话中从VS(工作正常时,从CMD启动).显然,默认的工作目录是指向${ProjectDir}而不是${OutDir}.我想更改默认路径,但由于我缺乏VS知识,我无法在IDE的设置中找到它。
${ProjectDir}
${OutDir}
**更新:**为避免混淆:我知道解决方案/项目属性(调试部分)中的设置。我正在寻找每当创建或导入新项目时设置目录的东西。
vsmadaxz1#
也许现在回答这个问题有点晚,但是...此外,我使用VS 2013(出于商业原因),但我认为VS 2017应该以类似的方式工作。
我的解决方案:
在.vcxproj文件中放入类似下面的内容,并保持VS-Gui属性对话框不变(或者将其恢复为 inherit-or-standard)
.vcxproj
<PropertyGroup> <my_workdir>$(SolutionDir)..\runtime\$(PlatformTarget)-$(Configuration)\</my_workdir> <LocalDebuggerWorkingdirectory>$(my_workdir)</LocalDebuggerWorkingDirectory> </PropertyGroup>
重新加载解决方案后,您应该在属性对话框中看到您的设置$(my_workdir)。根据当前的构建配置,它可以扩展到..\runtime\x64-Debug左右,但这是一个品味问题。我更喜欢尽可能使用解决方案目录的路径 * 相对 *。"如果你想让这成为标准行为..."查看一下你的.vcxproj文件(通常通过VS-〉AddNewProject生成),你会发现类似这样的内容:
$(my_workdir)
..\runtime\x64-Debug
<ImportGroup> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> . . .
$(UserRootDir)宏扩展到%HOME%\AppData\Local\MicroSoft\MSBuild\v4.0左右。您可以在那里(创建&)编辑*.user.props文件。在您的示例中,您将把<LocalDebuggerWorkingDirectory>..定义放在这些文件中--就这样。对于我自己,我不使用这种方法。我使用$(SolutionDirectory)中的一个./props/global_definitions.props文件,并将其导入(使用文本编辑器)到.vcxproj文件中。
$(UserRootDir)
%HOME%\AppData\Local\MicroSoft\MSBuild\v4.0
*.user.props
<LocalDebuggerWorkingDirectory>..
./props/global_definitions.props
1条答案
按热度按时间vsmadaxz1#
也许现在回答这个问题有点晚,但是...
此外,我使用VS 2013(出于商业原因),但我认为VS 2017应该以类似的方式工作。
我的解决方案:
在
.vcxproj
文件中放入类似下面的内容,并保持VS-Gui属性对话框不变(或者将其恢复为 inherit-or-standard)重新加载解决方案后,您应该在属性对话框中看到您的设置
$(my_workdir)
。根据当前的构建配置,它可以扩展到
..\runtime\x64-Debug
左右,但这是一个品味问题。我更喜欢尽可能使用解决方案目录的路径 * 相对 *。
"如果你想让这成为标准行为..."
查看一下你的
.vcxproj
文件(通常通过VS-〉AddNewProject生成),你会发现类似这样的内容:$(UserRootDir)
宏扩展到%HOME%\AppData\Local\MicroSoft\MSBuild\v4.0
左右。您可以在那里(创建&)编辑*.user.props
文件。在您的示例中,您将把
<LocalDebuggerWorkingDirectory>..
定义放在这些文件中--就这样。对于我自己,我不使用这种方法。
我使用$(SolutionDirectory)中的一个
./props/global_definitions.props
文件,并将其导入(使用文本编辑器)到.vcxproj
文件中。