无法编译 JSIL

Trouble getting JSIL to compile

我尝试使用 XNA 的每个现代版本的 JSIL 都以这个错误告终。

我过去曾到处寻找关于它为什么没有的信息 运行 最终得到关于 XNA 4.0 未正确安装或其他问题的答案。

此错误在 3 台不同的计算机上重现。

我可以获得一个 JSIL 版本,我可以从 git 存储库 (JSIL-0.7.6) 下载其中一个版本,如果您不提供它,它可以与 XNA 一起使用构建无法支持的任何内容。

但是这些版本现在已经有几年了。让现代建筑正常工作会很好。

我试着提供一些推测,但我有点力不从心。

JSIL-0.7.6 - 不会在 AnyCPU 中构建,需要将解决方案平台设置为 x86。

最新 JSIL git 版本 - 许多项目现在都设置为 AnyCPU,将它们设置为 x86 会产生各种错误或警告。

所以我认为在 JSIL 中的某些项目从 x86 支持到 64 位支持时我可能会遇到构建问题。

我安装了 visual studio express 2010 和 visual studio 社区。

我尝试过使用 XNA 刷新之类的方法。使用 emscription、FNA 等...

在一个理想的世界中,我宁愿让 JSIL 与 monogame 一起工作,但我在任何版本的 JSIL 上都会遇到如此多的错误,似乎不值得为此烦恼。将 monogame 项目移植到 xna 上并不太麻烦。

T运行k JSIL 旨在使用 VS2015 社区构建。大多数依赖项已移至 NuGet,这意味着您需要在首次构建之前恢复包 - VS2015 会自动为您完成此操作;在命令行中,您可能需要执行手动 NuGet 包还原。

如果您想使用 XNA 支持,您需要编译为 Debug|Any CPURelease|Any CPU。这应该仍然有效,因为 compiler - JSILc - 现在有 32 位和 64 位目标。如果您使用 32 位目标 (Compiler.Executor.32bit),这将确保编译器在 32 位模式下 运行ning 并且 XNA 位将工作。 32 位目标构建为 JSILc.exe,64 位目标构建为 JSILc.AnyCPU.exe.

就内容管道位而言,我需要查看更多日志文本来推测它为什么不起作用...但总的来说,内容管道在命令行 msbuild 中不能可靠地工作.最好的办法是先使用 Visual Studio 一次构建游戏项目,以便正确构建所有内容,此时命令行 msbuild 将更好地处理它。

对于 VS2015 中的 XNA,使用来自 codeplex 的 VS2013 包: https://mxa.codeplex.com/releases 在 VS2015 让您安装它之前,您可能需要编辑包内的清单,但它工作得很好。

使用 VS2013 构建可能会很好,但我最近没有这样做。

如果您仍然遇到问题,请尝试通过构建 NoXNA(Debug|NoXNA 而不是 Debug|AnyCPU)来排除基础问题,并确保一切正常。验证工作构建的一种简单方法是使用 VS2015 测试 运行ner 运行 'SimpleTests' 测试套件 - 它需要相对较短的时间,并将识别编译器的基本问题或构建管道。

请记住,当您从命令行调用 msbuild 或 csc 等工具时,您将获得哪个版本有些不可预测。 VS2015 x64 native tools command promptVS2015 x86 native tools command prompt 是两个开始菜单快捷方式,如果您有 VS2015,它们将为您提供命令提示符并加载正确的工具。鉴于您安装了 VS2010,当您尝试构建时,可能正在使用旧版本的 msbuild and/or csc。