我开发了一些没有数据库的软件。我想创建一个独立的 .exe 文件,以便将仅 .exe 文件提供给用户使用该软件。
不幸的是,我不知道如何在 .Net 中创建我的项目的独立 .exe 文件。
有人能为这个问题提供指导吗?
有一个叫Costura.Fody的附加程序,它将所有内容编译到一个单独的exe文件中,不需要安装。可以通过nuget进行安装,但最新版本的nuget将防止创建FodyWeavers.xml文件,因此需要手动完成。
我尝试过:
它们都可以工作,但是当我尝试将它们复制到另一台电脑上时(2021年6月17日),它们都被Windows Defender标记为恶意软件。Virustotal上的快速扫描确认了其他杀毒软件也存在这个问题。似乎改变DLL加载方式会触发杀毒软件的启发式分析。
然后我尝试使用自解压存档,在启动时简单地解压程序并从临时目录启动程序中的DLL。我尝试了7z和Winrar,并使用了各种不同的设置。我找到的唯一可靠的组合是:
这给了我一个可以双击以启动程序的exe文件,但需要注意的是它将无法在32位上运行,并且在启动时将显示提取对话框。
这样可以在virustotal.com上实现0/66的检测率:https://www.virustotal.com/gui/file-analysis/MDMxZmI3OWZiYTU3MTU1YWIxYmFmYTM0MjM4ZmE1MmE6MTYyMzkzMjY4OA==/detection
显然,这可能会随着时间的推移而改变,因此更可靠的方法可能是将您的exe与DLL作为压缩文件夹一起分发或使用安装程序。
终于找到了完美的答案
由于该页面已经过时,我担心它会被删除,因此将整个页面发布而没有图片。
对我来说,我没有费心制作“不要复制”的参考资料。此外,我完全跳过了第4步,因为我无法添加它们。我想知道是否与Nuget Manager已经添加有关。
最终,我可以轻松地从我的硬盘驱动器中提取出exe文件并在任何地方运行它。
以上内容源自上述链接。
前段时间我在Visual Studio 2008中开发了一个小型C# WinForms应用程序。为简化应用程序的部署流程,将所有组件打包成一个exe文件会更容易管理。但是 - 关于在exe文件中嵌入dll文件的文档和教程已经过时、不完整或根本无法工作。其他人已经解决了.exe的问题,所以从一个普遍的开发角度来看,你可能想要审查你的代码并识别出可以在未来开发中重复使用的函数/类。
然后,你可以将它们提取到一个单独的.DLL文件中,仍然为你的用户提供软件,但下一个应用程序的开发会更容易一些,并且对这些函数的任何改进都可以轻松地在两个应用程序中采用...
当编译 .Net 项目时,会在应用程序属性中设置的 Debug/release 路径上生成 exe 文件。 我想你正在要求提供自解压应用程序安装 exe 文件,以便用户可以使用软件而不提供任何相关源代码或项目文件。 为了尝试打包,您可以尝试免费提供的应用程序打包工具,例如 innosetup 或 Nsis,并将其打包成安装文件。我使用 Innosetup,它很容易。