【发布时间】:2022-10-04 18:36:25
【问题描述】:
统一版本:2020.3.23f1
脚本后端:单核细胞增多症
API 兼容级别:.NET 4.x
播放器平台:Windows 独立
我正在尝试使用 GitHub 项目Python.NET (Python.Runtime.DLL),它的目标是.NET 标准 2.0和参考资料System.Reflection.Emit.
我已经导入了两个:
- Python.Runtime.dll和
-
System.Reflection.Emit.dll(.NET Standard 2.0 版本)
...到我的项目。
我的理解是System.Reflection.Emitis not supported on Ahead-of-time (AOT) platforms/IL2CPP,但 Mono 后端应该没问题。
然而,Python.运行时仍然抛出:
PlatformNotSupportedException
...在任何电话System.Reflection.Emit.
是System.Reflection.Emit不再受支持,如果是这样,是否有可能的解决方法或我可以重建的方法Python.Runtime.dll从源头避免这个问题?
-
\"不再支持 System.Reflection.Emit\"- 不是 MS 仍然支持它(目前在 .NET 7 中与 Unity 无关)并且作为 .NET Framework 4.x 和 .NET Standard 2.1 的一部分,它与 Unity 兼容。 docs.unity3d.com/Manual/dotnetProfileSupport.html
-
你在制作什么类型的游戏,对 Python 脚本有什么需求?你希望做什么样的事情?这会像 LUA 脚本在魔兽世界?我问的原因是反射发射是其中一种技术(另一种是代码DOM) 在 .NET 中,它允许您在运行时生成 .NET 二进制文件做任何事C# 开发人员可以在设计时编写。除非你有某种形式的 .NET 沙盒化这些曾经的 Python 脚本,否则现在 .NET 代码可能是恶意的!
-
\"我的理解是 AOT 平台/IL2CPP 不支持 System.Reflection.Emit,但 Mono 后端应该没问题\"- 是的,这是有道理的,因为 Unity 不能提前时间编译那些不存在的,如果它存在,我们就不需要 Python。 :)
标签: .net unity3d mono .net-standard-2.0