无法编译 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 CPU
或 Release|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 prompt
和 VS2015 x86 native tools command prompt
是两个开始菜单快捷方式,如果您有 VS2015,它们将为您提供命令提示符并加载正确的工具。鉴于您安装了 VS2010,当您尝试构建时,可能正在使用旧版本的 msbuild and/or csc。
我尝试使用 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 CPU
或 Release|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 prompt
和 VS2015 x86 native tools command prompt
是两个开始菜单快捷方式,如果您有 VS2015,它们将为您提供命令提示符并加载正确的工具。鉴于您安装了 VS2010,当您尝试构建时,可能正在使用旧版本的 msbuild and/or csc。