Visual Studio 编译,但 exe 不存在
Posted
技术标签:
【中文标题】Visual Studio 编译,但 exe 不存在【英文标题】:Visual Studio compiles but the exe isn't there 【发布时间】:2011-03-14 23:21:09 【问题描述】:在其他人的环境中编译良好的源代码在我的环境中无法正常工作。当我进行重建时,会发生编译,但是当 Visual Studio 将 exe 从 /obj/debug/solution 移动到 /debug/solution 时,它无法在 /obj/debug/solution 中找到 exe。即使在我重新安装了 Visual Studio 之后,它也会变得更加疯狂。在其他人的环境中,它可以找到。请注意,这是一个 windows mobile 6,compact framework 3.5 项目,Visual C++ 项目。
编辑:正在使用 Visual Studio 2008。
EDIT2:再次查看日志后发现它说它正在编译,但它并没有真正编译。有趣的是,它在尝试链接代码之前不会抛出任何错误。当它去链接目标文件时,它们不存在并且失败了。
【问题讨论】:
添加 Visual Studio 版本。也许它会有所作为。 【参考方案1】:在解决方案属性页面中,检查您期望的exe路径是否与链接器->输出文件中指定的路径相同。
另一个明显的错误可能是,检查您正在构建的构建配置。你可能正在做一个发布版本并期待一个调试可执行文件:) 我已经做过几次了。
【讨论】:
请注意,完全相同的源代码行可以在另一台 PC 中正确构建。一切都一样,只是一台不同的计算机。此外,Visual Studio 设置为 Debug 构建。它尝试构建它,您可以在输出中看到它正在构建调试版本。 Visual Studio 抛出一个错误,例如“将 /obj/debug/solution 复制到 /debug/solution 时出错,/obj/debug/solution 不存在”。如果我查看任何一个目录,Visual Studio 都是正确的,那里什么都没有。但我查看日志,它正在编译它并输出 EXE。太疯狂了。【参考方案2】:如果您创建一个新的“hello world”WM 项目,它可以工作吗?
如果是这样,您可以比较解决方案文件以检查可能导致此问题的差异。
【讨论】:
在此工作站上不起作用的解决方案文件在所有其他工作站上都起作用。 不过,由于这是特定于机器的,而且我的建议很容易测试,我建议你这样做,看看是否有差异。【参考方案3】:也许您没有对输出文件夹的写入权限?如果您在 Vista/7 上运行,您的 Visual Studio 是否以提升的方式运行?
【讨论】:
工作站使用的是 Windows XP。它有写入权限。【参考方案4】:如果完全相同的解决方案适用于其他机器,那么这是一个环境问题,再多看项目、链接器等也无法解决这个问题。环境有什么不同?相同的服务包和 QFE 是否不仅适用于 Studio,还适用于操作系统?处理器(64/32 位)有区别吗?你的权限是一样的吗?是否安装了相同的 SDK?
我同意 Shahi 的观点,即尝试针对同一个 SDK 构建一个“hello world”应用程序并查看它是否能够编译是有价值的信息。
【讨论】:
【参考方案5】:也许 VS 会创建 exe,然后在尝试将其移动到最终目的地之前,您的病毒扫描程序会抓取并删除它,或者将其移动到保存位置。
【讨论】:
【参考方案6】:我有两个发布文件夹:一个在解决方案文件夹中,一个在项目文件夹中。前者包含.exe文件,后者不包含。
【讨论】:
【参考方案7】:我只是想插话问:您是否从上面的目录中查找过 *.exe 文件名?在我的案例中,我发现它正在写入 /release 子目录正上方的目录。不知道我是怎么错过这个细节的,但我做到了!我想我之前从未想过,因为我看到 buildlog.htm 被写入 /release 子目录,并且目录本身的存在。就我而言,它正在编译、链接等。我只是无法在 /release 子目录中看到 *.exe。
【讨论】:
【参考方案8】:据我所知,您需要在构建之前“全部保存”。
【讨论】:
【参考方案9】:我遇到了完全相同的问题。只需关闭 Visual Studio 并再次重新打开它(基本上是重新启动它),它应该可以工作了。
【讨论】:
【参考方案10】:在现在的 VS2016 中,我发现这对我自己来说是随机的。我的解决方法是创建另一个项目并将内容从没有 .exe 的项目复制到新项目。出于某种原因,新的通常会有正确的 .exe 和所需的位置。虽然这不是一个完整的解决方案,但至少它暂时对我有用。
【讨论】:
【参考方案11】:今天发生在我身上:
TL;DR;您可能在您的项目中使用了某些 C# 代码,这些代码属于您的项目所针对的 .NET Framework 版本不支持的语言版本
详情:
我的解决方案中有两个项目。一个项目已经存在。我添加了一个针对 Visual Studio(VS) 2017 类库项目模板支持的最新 .NET Framework v4.6.1 的新项目。我使用了 C# v7.0 中存在的一些 C# 语言特性。在这种情况下,VS 可以编译项目,但无法在bin
目录中创建输出。
最终我不得不将新项目代码文件合并到现有的针对 .NET Framework v4.5.1 的旧项目中。
所以我也将现有项目的目标框架版本更改为最新的 .NET Framework v4.6.1。然后旧项目也开始支持我新粘贴的 C# 语言功能。
【讨论】:
【参考方案12】:就我而言,我的网络安全团队发布了一个未宣布的安全更新,阻止我创建任何 .exe 文件。在尝试了这里的所有解决方案(+ 更多)后,我在中午发现了这一点。
【讨论】:
【参考方案13】:有两条略有不同的路径。我在看这里,它不存在:
C:\Users\james\source\repos\CppHelloWorld\Release\CppHelloWorld.exe
实际的 exe 在这里 - 请注意路径包含为它构建的 x64
平台:
C:\Users\james\source\repos\CppHelloWorld\x64\Release\CppHelloWorld.exe
一般来说,路径似乎是:
$PROJECT_PATH\$PROJECT_NAME\$PLATFORM\$CONFIGURATION\$PROJECT_NAME.exe
【讨论】:
以上是关于Visual Studio 编译,但 exe 不存在的主要内容,如果未能解决你的问题,请参考以下文章
如何只用visual c++编译器而不安装visual studio
在 Visual Studio 中通过 C# 类编译 C++ 代码
从PowerShell设置Visual Studio环境变量