【发布时间】:2016-02-04 01:47:29
【问题描述】:
我正在尝试使用 Monogame 构建游戏。 Monogame 使用自己的一堆 DLL。然而,在其中一个 DLL 中存在对另一个 DLL 的依赖项(由于未安装,它可能不存在)。
更具体地说,当尝试利用 Monogame 的 DLL 的方法/类时
GamePad.GetState(PlayerIndex.One).Buttons.Back
产生此错误:
无法加载 DLL 'xinput1_3.dll':找不到指定的模块。 (HRESULT 异常:0x8007007E)
修复此错误并不难。用户需要安装正确的系统要求。
如何从前端告诉用户?我的目的是在继续运行游戏时通知用户“游戏手柄控制器因此被禁用,因为您的系统上没有安装 xxx”——因为游戏手柄是可选的。
在尝试使用该方法/类之前,有没有办法我可以发现这个问题(即,有没有办法我可以检查这个 DLL 是否存在 - 而不是非常具体的位置/文件路径)?
在整个应用程序周围设置try-catch 块是最好的方法吗?
有没有更好的方法来处理(常见的?)“无法加载 DLL”的情况?
我的主要目标是忽略任何 DLL 依赖问题,因为我计划在没有安装程序的情况下分发此游戏。此外,应该忽略任何丢失的非破坏游戏的 DLL。
【问题讨论】:
-
为什么要让用户负担你应该做的事情?这就是安装程序的用途。 Steam 上的 XNA 游戏同时安装 XNA 和 .NET 运行时
-
我刚刚读到您计划在没有安装程序的情况下进行分发,以及您打算如何忽略体面错误。考虑到您的应用程序类型,我认为这对您的用户群有些疏忽和不尊重
-
完全同意你的看法。在 Steam 等官方商店发布时,这一点尤其重要。我之所以选择一个不需要(繁琐?)安装的移动可执行文件只是个人喜好。
-
(当我说 "ignore decency errors" 它应该是 "ignore dependency errors")-该死的 iPhone ;)