在Visual Studio中编译为独立的可执行文件(.exe)

时间:2010-01-09 21:47:55

标签: c# c++ visual-studio executable console-application

如何在Visual Studio中创建一个独立的exe。它只是一个简单的控制台应用程序,我认为用户不希望安装一个小的控制台应用程序。我使用visual studio命令提示符编译了一个简单的cpp文件。即使没有安装.NET框架,exe也会工作吗?我使用了原生的C ++代码。

7 个答案:

答案 0 :(得分:55)

在项目文件夹中,他们是一个bin文件夹。在bin文件夹中,有2个文件夹,一个Release和一个Debug。对于抛光的.exe,您需要进入Release文件夹。

我不太确定那是不是你问的是什么

答案 1 :(得分:20)

使用托管环境(包括用C#和VB.NET编写的任何内容)的任何内容都需要.NET框架。您可以在该场景中简单地重新分发您的.EXE,但如果他们还没有它,他们将需要安装相应的框架。

答案 2 :(得分:19)

如果我理解正确,是的,你可以,但不是在Visual Studio(据我所知)。 要强制编译器生成真实的独立可执行文件(这意味着您像任何其他语言一样使用C#),请使用程序mkbundle(随Mono一起提供)。这会将您的C#应用​​程序编译为真实的,无依赖的可执行文件。

互联网上存在很多误解。它并没有像某些人所说的那样破坏.net框架的目的,因为如果你没有使用这些功能,你怎么会失去.net框架的未来功能呢?当您向应用程序发送更新时,在构建安装程序之前通过mkbundle处理器运行它并不是一项艰难的工作。还有一个速度优势包括使您的应用程序以原生速度运行(因为现在它是原生的)。

在C ++或Delphi中,您拥有相同的系统,但没有中间的MSIL层。因此,如果您使用命名空间或源文件(在Delphi下称为单元),那么它将被编译并包含在您的最终二进制文件中。因此,您的最终二进制文件将更大(读取:真实应用程序的“正常”大小)。您在.net中使用的框架部分也是如此,这些部分也包含在您的应用程序中。但是,智能链接确实可以节省数量。

希望它有所帮助!

答案 3 :(得分:3)

我同意@Marlon。使用Release配置编译C#项目时,您将在项目的“bin / Release”文件夹中找到应用程序的可执行文件。这应该适用于简单的应用程序。

但是,如果您的应用程序对某些外部dll有依赖关系,我建议您使用VisualStudio创建一个SetupProject。这样,项目向导将找到应用程序的所有依赖项,并将它们(库)添加到安装文件夹中。最后,您所要做的就是在用户计算机上运行安装程序并安装软件。

答案 4 :(得分:1)

我从未遇到过使用C#原样部署小型控制台应用程序的问题。你可以遇到的唯一问题是对.NET框架的依赖,但即便如此也不应成为主要问题。您可以尝试使用该框架的2.0版本,该版本应该已经在大多数PC上。

使用本机非托管C ++,您不应该对.NET框架有任何依赖,所以您确实应该是安全的。只需抓取可执行文件和任何附带的文件(如果有的话)并按原样部署它们;如果您不想安装它们,则无需安装它们。

答案 5 :(得分:0)

我不认为通过将所有项目文件合并为一个.exe,可以做出提问者要求避免dll hell的内容。

框架问题是一个红色的鲱鱼。出现的问题是,当您有多个项目依赖于一个库时,PITA是保持库同步的。每次库更改时,依赖于它并且不会更新的所有.ex将会死得很厉害。

告诉人们学习C作为一个回应确实是傲慢和无知的。

答案 6 :(得分:0)

你可以在你的主dll中嵌入所有的dll。请参阅:Embedding DLLs in a compiled executable