无法理解在 monogame/xna 中“发布”代码的工作原理

Posted

技术标签:

【中文标题】无法理解在 monogame/xna 中“发布”代码的工作原理【英文标题】:Having problem understanding how 'releasing' a code works in monogame/xna 【发布时间】:2021-09-07 13:23:11 【问题描述】:

作为一名新手编码爱好者,我使用 Visual Studio 和 Monogame 制作了一些简单的游戏,例如 pong、snake、tic-tac-toe。我想与朋友分享。

当我完成并构建/发布/编译(正确的术语是什么?)将代码转换为 .exe(不是调试)时,它会将其与一堆其他文件放在一个文件夹中。

那些是什么?我可以摆脱它们并将其全部放入 1 个文件中吗?我制作的程序看起来太简单了,不能有超过 1 个文件。

【问题讨论】:

这个问题与 Java 有什么关系? “我制作的程序看起来太简单了,不能有超过 1 个文件。” - 好吧,MonoGameFramework.dll 不是你的代码;这是 MonoGame 的。我猜这可能是 .NET Core,所以 TicTacToe.exe 是对您的实际程序代码 (TicTacToe.dll) 的薄包装,而 TicTacToe.pdb 是用于调试的符号文件。跨度> 我将删除 java 标记,我认为其他语言的程序可能会执行相同的操作。我不确定我是否理解你所说的......也许我需要一个更外行的解释。 如果是 .NET Core 项目,则 .exe 仅用于开始执行 .dll 文件中的实际应用程序代码。 【参考方案1】:

当我完成并构建/发布/编译时(正确的术语是什么?)

编译是将 C# 代码转换为可执行文件的过程。编译是构建过程的一部分,它还可以包括其他任务,如测试、打包等。

要调试可执行文件,需要在“调试”配置中构建项目,其中包含大量额外数据以及您的代码。这些额外的数据允许调试器暂停并逐行执行源代码。项目准备就绪后,它会在“发布”配置中构建,这只是您的应用程序所需的文件/数据可执行文件。

...它把它放在一个文件夹中,里面有一堆其他文件。 那些是什么?我可以摆脱它们并将其全部放入 1 个文件中吗?我制作的程序看起来太简单了,不能有超过 1 个文件。

好吧,即使您的应用程序很简单,您也将 Monogame 用作依赖项,这是您项目中非常复杂且独立的部分。因此,如果您正在构建这样的项目,您总是可以期望这些文件存在。

您要查找的术语是“打包您的软件”。您需要创建一个包以便于分发。

编辑:Monogame 有一个 article for this 确切的主题。您需要通过 dotnet-sdk 在控制台中执行这些命令。


您还可以考虑将其设为 UWP 项目,这样可能会稍微容易通过 Windows 应用商店进行分发。当然,您可以将生成的 UWP 包文件发送给您的朋友,但这与您在使用桌面构建文件时遇到的问题有点相同。

您可以使用 this Visual Studio's extension 将项目打包为 .msi 安装程序。我没有在 Monogame 上尝试过,但应该不会太难。

最后,您也可以将其压缩为 zip 包。一个廉价的黑客,但它的工作原理。

【讨论】:

谢谢,您的解释很清楚,很有帮助。 @firstgaurd 很高兴为您提供帮助。

以上是关于无法理解在 monogame/xna 中“发布”代码的工作原理的主要内容,如果未能解决你的问题,请参考以下文章

彻头彻尾理解JVM系列之七:对象在分代模型中的流转过程是怎样的?

彻头彻尾理解JVM系列之七:对象在分代模型中的流转过程是怎样的?

深入理解jvm--分代回收算法通俗理解

无法删除 cfn 堆栈,角色无效或无法代入

深入理解V8的垃圾回收原理

深入理解Java虚拟机——分代收集(Generational-Collection)算法