Visual Studio 2008:项目输出.com文件

时间:2009-11-19 16:10:08

标签: visual-studio dos

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正在做的事情。

2 个答案:

答案 0 :(得分:3)

实际上,这有点伤害。不,您无法使用Visual Studio创建MS-DOS程序。根本就没有编译器后端。

.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

你不需要那个中间步骤