C# Unity Linux软件包导出正在修改我的DLL

C# Unity Linux软件包导出正在修改我的DLL,c#,linux,unity3d,dll,command-line,C#,Linux,Unity3d,Dll,Command Line,为了提供一些上下文,我正在尝试在Ubuntu16.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

为了提供一些上下文,我正在尝试在Ubuntu16.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
这里A和B是我自己定义的类型和名称空间。。i、 e.未加载dll。但是这个dll没有什么问题。特别是,如果我运行上面的mcs命令,获取输出dll并替换导入包中的dll,那么导入的一切都很好。如果我查看在unitypackage中导出的dll的汇编属性,以及直接从mcs导出的dll(使用ILSpy),我可以看到unity导出的dll有一个额外属性:

[assembly: UnityAPICompatibilityVersion("5.6.0xb10Linux")]

我非常怀疑这是导致问题的属性,但我不知道如何阻止Unity以这种方式导出dll,从而使unitypackage不受平台影响。有什么想法吗?

事实证明,我在Linux机器上运行的Unity版本比在Windows机器上运行的要晚。代码中存在不兼容错误,因为就Linux机器而言,我使用的是Unity API中过时的函数。因此,当它构建包时,它创建了一个扭曲的dll。哎呀

[assembly: UnityAPICompatibilityVersion("5.6.0xb10Linux")]