命令行等效于 Visual Studio 正在执行的操作

Posted

技术标签:

【中文标题】命令行等效于 Visual Studio 正在执行的操作【英文标题】:Command Line Equivalent of What Visual Studio Is Doing 【发布时间】:2018-04-12 19:58:18 【问题描述】:

我正在使用 Visual Studio 2017 开发一个项目。在 Visual Studio 中一切正常。

当我尝试运行编译生成的.exe 时,程序中止。我认为这与dll有关。

有没有办法准确查看 Visual Studio 为使可执行文件正常运行所做的工作,我能否以某种方式看到与 Visual Studio 对可执行文件所做的命令行等效的操作?

这是一个 opencv C++ 项目,如果有任何相关性的话。

【问题讨论】:

【参考方案1】:

当您从 Visual Studio 开始调试时,默认情况下,当前工作目录是项目文件 (.vcxproj) 所在的文件夹。当您从命令行或 Windows 资源管理器启动应用程序时,当前工作目录是 .exe 所在的位置。因此,要测试这是否是问题所在,请创建一个启动 .exe 的快捷方式,但将快捷方式中的工作目录设置为项目文件所在的位置。或者将 Visual Studio 中的工作文件夹更改为 .exe 所在的位置(项目属性 > 配置属性 > 调试 > 工作目录)

调试和运行的另一个区别是堆。有关详细信息,请参阅this question。

使用Sysinternals Suite 中的进程监视器查看正在加载的 dll、从何处以及以何种顺序加载。如果某些 dll 丢失,日志将显示 Windows 尝试从 PATH 中的每个可能目录以及当前工作目录加载它,但失败了。

【讨论】:

谢谢你,我搞定了,你说得对,不同的工作目录是问题

以上是关于命令行等效于 Visual Studio 正在执行的操作的主要内容,如果未能解决你的问题,请参考以下文章

如何自动化(从命令行)安装 Visual Studio Build Tools 构建环境,适用于 C++、.NET、C# 等

这些 G++ 标志的 Visual Studio 等效项?

如何从 OSX 的命令行打开 Visual Studio Code?

使用命令行在 Visual Studio 2019 中打开 CMake 项目

省略号交换机案例Visual Studio等效

在 Visual Studio 2017 中将 .NET Core 2.2 应用程序发布为依赖于框架的可执行文件 (FDE)