gpt4 book ai didi

c# - Unity Linux 包导出正在修改我的 DLL

转载 作者:太空宇宙 更新时间:2023-11-04 12:32:14 26 4
gpt4 key购买 nike

为了提供一些背景信息,我正在尝试在 Ubuntu 16.04 上创建一个构建服务器来为 Unity Asset store 构建一个包。

我正在使用 mcs 将我们的一些代码(我们不希望用户看到的代码)导出到一个 dll 中,使用以下命令:

mcs -debug+ -debug:full -optimize- -codepage:utf8 -sdk:2 -lib:/opt/Unity/Editor/Data/MonoBleedingEdge/lib/mono/2.0-api/ -t:library -define:DEBUG -define:RELEASE_IS_TRIAL -define:DEBUGGER_IS_DISABLED  -out:<path to dll> -reference:<required extra references> -recurse:<path to source>/*.cs

然后我将其放入一个新的统一项目中并使用以下命令导出该项目:

/opt/Unity/Editor/Unity -quit -batchmode -nographics -serial <serial> -username <username> -password "" -projectPath <path to project> -exportPackage "Assets" <path to preferred output location>.unitypackage

如果我然后在 Windows 上统一导入这个包,我会得到一堆错误:

The type or namespace name A does not exist in the namespace B (are you missing an assembly reference?)

这里的 A 和 B 是我自己定义的类型和命名空间.. 即没有加载 dll。不过这个 dll 没有任何问题。特别是,如果我运行上面的 mcs 命令,获取输出 dll 并替换导入包中的那个,一切都可以正常导入。如果我查看在 unitypackage 中导出的 dll 的程序集属性,以及直接来自 mcs 的 dll(使用 ILSpy),我可以看到由 unity 导出的那个有一个额外的属性:

[assembly: UnityAPICompatibilityVersion("5.6.0xb10Linux")]

我非常怀疑这是导致问题的属性,但我不知道如何阻止 Unity 以这种方式导出 dll,以便 unitypackage 可以与平台无关。有什么想法吗?

最佳答案

事实证明,我在 Linux 机器上运行的 Unity 版本比在 Windows 机器上运行的版本更高。代码中存在不兼容错误,因为就 Linux 机器而言,我使用的是来自 Unity API 的过时函数。因此,当它构建包时,它创建了一个古怪的 dll。糟糕。

关于c# - Unity Linux 包导出正在修改我的 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43008852/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com