无法让JSIL编译

时间:2015-08-31 13:25:16

标签: c# xna monogame jsil

我尝试使用XNA的每个现代版本的JSIL最终都会出现此错误。

Error code from JSILc.exe with an XNA 4.0 solution

我曾经在过去看过有关它为什么不运行的信息,最终得到的答案是关于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并不是太麻烦。

1 个答案:

答案 0 :(得分:2)

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

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

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

对于VS2015中的XNA,请使用codeplex中的VS2013包: https://mxa.codeplex.com/releases

,您可能需要在VS2015允许安装之前编辑包内的清单

使用VS2013构建可能会正常工作,但我最近还没有这样做。

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

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

相关问题