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

Moh*_*nde 37 c# c++ executable console-application visual-studio

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

小智 55

在项目文件夹中,它们是bin文件夹.在bin文件夹中,有2个文件夹,一个Release和一个Debug.对于你的抛光.exe,你想进入你的Release文件夹.

我不太确定那是不是你问的问题

  • 请注意,如果尚未构建,则必须通过选择Build> Configuration Manager下的Release选项来构建Release版本. (8认同)

Joe*_*Joe 21

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

  • 我很确定原生的非托管C++与.net无关.您可以安全地部署它,而不必担心依赖性. (3认同)
  • 您可以使用非托管C++来避免.NET运行时依赖性,但根据Visual Studio的版本,用户可能需要相应的Visual Studio运行时DLL(除非您完全静态链接,这并非总是100%容易正确执行.) (3认同)

Jon*_*den 19

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

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

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

希望能帮助到你!


小智 5

发布项目时,您可以将“部署模式”设置为“自包含”,然后选择“生成单个文件”选项。

点击查看gif视频