VS2017编译成功但是没有生成.exe文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VS2017编译成功但是没有生成.exe文件相关的知识,希望对你有一定的参考价值。
只是一个单纯的C#编写的输出信息文件,我执行以后在debug目录下找不到.exe文件。
执行以后信息如下:
正在还原 NuGet 程序包...
若要阻止 NuGet 在生成期间还原程序包,请打开 Visual Studio 的“选项”对话框,单击“程序包管理器”节点,然后取消选中“允许 NuGet 在生成期间下载缺少的程序包”。
1>------ 已启动生成: 项目: ConsoleApp1, 配置: Debug Any CPU ------
1>ConsoleApp1 -> D:\VS2017\source\ConsoleApp1\ConsoleApp1\bin\Debug\netcoreapp2.0\ConsoleApp1.dll
========== 生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0 个 ==========
再有看是编译选项,确定目录在哪 项目里有两个Debug目录的 参考技术A 我遇情况运行别程序没问题程序本身错误程序参数类型匹配类问题都引起exe执行文件
VS2010 c++编译的时候总是出现找不到exe文件、这是个啥情况
VS在生成可执行文件时使用了一种新的技术,该技术生成的可执行文件会伴随生成一个清单文件(manifestfile)(.manifest后缀文件)(其本质上是XML文档,你可以用文本编辑器打开看看),并在链接完成后将该清单文件嵌入到exe文件中(默认
情况下)。而在FAT32文件系统中,在处理清单文件阶段,当增量链接时不能完成清单文件的更新(默认情况下),于是造成清单文件嵌入失败,从而使该
exe文件运行时没有相应的清单文件而运行失败并提示如上错误。
解决方案很多,列举如下:
1. 由于这是在链接动态运行库出现的问题,所以你可以选择代码生成的连接方式为/MTd而非/MDd,不用这些DLL文件从而避免问题的出现。该方法有一个很显然的缺点:适用范围有限,不推荐该方法。
2. 既然跟FAT32系统有关,那么我们可以选择在NTFS文件系统中开发从而避免该问题,此方法同上,也是采用的回避问题的方式,不提倡。
3.
该方法仍与FAT32有关:在项目的“属性|配置属性|清单工具|常规”中的“使用FAT32解决办法”选择“是”(默认为“否”),重新生成项目即可解
决问题。该方法是唯一真正针对问题所在而提出的解决方法,使清单工具可以正确更新。(此方法是官方解决方法,也比较方便,推荐)
4. 既然问题是在更新嵌入的清单文件时发生的,由于FAT32的原因而未能更新嵌入的清单文件,于是我们有如下两种解决方法:
(1)不启用增量链接。在项目的“属性|配置属性|链接器|常规”中的“启用增量链接”选择“否”。此方法阻断了问题产生的源头,其每次生成exe文件时都直接嵌入清单文件,而不是默认的根据时戳而决定是否更新清单文件。
(2)不嵌入清单文件。在项目的“属性|配置属性|清单工具|输入和输出”中的“嵌入清单”选择“否”,从而在生成exe文件时附随生成一个清单文件(默
认情况下,其文件名为exe文件的全名加上“.manifest”),避免了嵌入清单文件可能失败的问题。在程序运行时,会用到该清单文件。显然,这种方
式使可执行程序产生了更多的外部依赖,不推荐。
另外,还有一个不能称为方法的土办法:每次Build前手动删除*.ilk文件(增量链接文件)(当然可以在项目属性中写入删除命令,使其自动执行),不推荐该土办法。
最后,总结一下:
1. 此问题只在特定条件下才会出现:在FAT32文件系统中编译、默认设置(增量模式、不启用FAT32解决方案、嵌入清单文件)、非第一次生成可执行文件文件(即在增量连接、更新清单文件时)。
2. 解决方案1和4.1方便实用,推荐使用。追问
你的答案很详细。但是我都试了,。不行
后来改为release版本就对了,先前是deburg的模式。。
关于这个具体我也不知道怎么回事。。。
好在程序运行了。
以上是关于VS2017编译成功但是没有生成.exe文件的主要内容,如果未能解决你的问题,请参考以下文章