这个问题真的很烦人,我至少花了两天时间四处寻找答案。基本上,我想发布一款游戏,在我正式发布之前,我雇了一个朋友来测试它。每当他运行它时,他都会报告说"什么都没发生"。
满足以下条件:
- 他安装了.NET Framework 4.0和XNA Redistributable 4.0(他很可能也安装了其他.NET Framework和XNA Framework,因为什么都没用)
- 游戏被编译到Release版本中
- 引用的GamerService已删除
一个可能的问题是他使用的是Win8,但根据我的搜索经验,XNA DEVELOPMENT仅限于Windows 8,对吧?
那么,发生了什么事?我一无所知。。我甚至在游戏执行后通过try
/catch
在我的Program.cs
文件中放了一个MessageBox.Show();
,但没有结果。
我的代码中是否存在需要满足的极端条件?任何网站都描述了运行XNA游戏的所有要求的100%以及构建它的最正确方法?
在XNA编码中使用不可分发的"开发人员工具"时有任何问题吗?如果是,这些"开发人员工具"中包含什么,我需要修改什么?(我在另一个帖子中注意到了这一点)。
这个问题的答案会让我的一天。。。
啊,而且,我试着在虚拟机(Windows 7)上运行它,但后来它在一个完全有效的代码执行中弹出了一个消息框,上面写着Index outside the bounds of the array
,以及其他各种随机错误,比如文件明显存在时丢失了文件。
非常感谢!
总之,我认为您的应用程序不会在Windows 8上运行,让我解释一下:
Windows 8
一个可能的问题是他使用的是Win8,但根据我的搜索经验,XNA DEVELOPMENT仅限于Windows 8,对吧?
官方表示,使用未经修改的Microsoft XNA 4/的桌面游戏在Windows 8上不支持任何形式:
微软官员表示,主要由游戏开发商使用的XNA工具运行时环境在Windows8上不受支持-阅读更多。。。
可再分发内容
在XNA编码中使用不可分发的"开发人员工具"时有任何问题吗?
这取决于在目标计算机上运行时是否需要它们。这听起来可能有点矛盾,但在Windows c/c++中,我可以有一个依赖于Microsoft DLL的应用程序,但我们不允许部署DLL,必须取决于它是否存在于操作系统中;服务包或其他表格。你缺什么东西了吗?
Windows 7
啊,而且,我试着在虚拟机(Windows 7)上运行它,但它在一个完全有效的代码执行上弹出了一个消息框,上面写着索引超出了数组的界限
这更有趣,我怀疑这是应用程序中更可测试的方面之一(而且它不是Windows8)。我建议您在Win7虚拟机上设置一个远程调试会话,如果不可能,请使用debug.WriteLine()或等效程序来显示关键状态内容。