Visual Studios 2008是否有办法为控制台项目创建.com文件而不是.exe文件?现在我必须这样做:
if $(ConfigurationName) == Debug goto :debug
:release
copy ProjectNameConsole.exe ProjectName.com
goto :exit
:debug
:exit
然后对于安装程序,我必须添加复制的.com对象,而不是添加项目输出。使用此方法,我无法调试安装程序,除非我为调试创建.com对象,并更新安装程序以复制该文件而不是发布版本。
如果您对此感到疑惑,我们的应用程序同时具有GUI和控制台版本。可执行文件的.com版本充当应用程序的控制台版本。如果exe和com文件具有相同的名称,则用户在调用“ProjectName”时将自动在控制台窗口中使用该com文件。
更新:我想我的问题有点误导。我想创建一个Windows exe,但我希望让项目输出命名对象“ProjectName.com”而不是“ProjectName.exe”。正如shf301指出的那样,我基本上正在做Visual Studios正在做的事情。
答案 0 :(得分:3)
.com file实际上不是 a Win32 PE。重命名它并没有帮助这个事实。
如果您需要将应用程序作为(Windows)控制台应用程序和GUI变体,那么只需创建两个不同的可执行文件(在一个程序中同时存在一些问题)。
答案 1 :(得分:0)
不,你不能用Visual Studio创建一个MS-DOS程序,你只能创建32位和64位Windows应用程序,但我认为你真的不想要一个MS-DOS程序。你想要的是一个Windows控制台应用程序。控制台应用程序(例如ipconfig.exe,findstr.exe)不是MS-DOS程序,然后是使用32位控制台的32位Windows应用程序,永远不会在MS-DOS中运行。
您只需将.exe文件重命名为.com,Windows将handle that fine,因此您只需将控制台应用程序重命名为所需的文件名即可。这正是Visual Studio本身所做的,请参阅this。
编辑:现在我已经更仔细地阅读了您的问题,您真的已经这样做了,您的问题是将调试版本放入安装程序。为什么不总是在后期构建步骤中将.exe重命名为.com并将其复制到这样的公共位置:
copy ProjectNameConsole.exe ..\..\ProjectName.com
而不是具有不同的调试和发布案例。然后将安装程序指向出现构建的位置。要获得调试版本,请在调试中构建项目,然后重新构建安装程序。
编辑2 :如果您使用的是Visual C ++,则有一种更简单的方法。在“项目属性”中,单击“链接器”选项并从以下位置更改“输出文件”:
$(OutDir)\$(ProjectName).exe
到
$(OutDir)\ProjectName.com
你不需要那个中间步骤