C# 代码剥离错误

C# 代码剥离错误,c#,dll,mono,unity3d,C#,Dll,Mono,Unity3d,我用mono为Unity3d制作了一个小的C#库作为插件,这样其他开发人员就可以使用dll文件并开始使用它进行编码。图书馆很好。但是在构建unity时会出现此错误UnityException:失败的程序集剥离器: 原因可能是什么。在一些线程中,我发现禁用代码剥离,将调用优化设置为慢速和安全,甚至使用.Net子集 我的播放器设置如下。 答案的工作原理如所述。但我想要的是我自己的DLL与我的播放器设置。因为我见过许多第三方库或DLL,它们在我的播放器设置中100%正常工作。例如Prime31,Ne

我用mono为Unity3d制作了一个小的C#库作为插件,这样其他开发人员就可以使用dll文件并开始使用它进行编码。图书馆很好。但是在构建unity时会出现此错误UnityException:失败的程序集剥离器:

原因可能是什么。在一些线程中,我发现禁用代码剥离,将调用优化设置为慢速和安全,甚至使用.Net子集

我的播放器设置如下。

答案的工作原理如所述。但我想要的是我自己的DLL与我的播放器设置。因为我见过许多第三方库或DLL,它们在我的播放器设置中100%正常工作。例如Prime31Neatplug以及unity asset store中的更多插件

如果你有任何解决办法,请告诉我


创建库项目时,我遵循了

中提到的步骤,这很可能来自设置.NET 2.0子集。您的插件很可能需要使用子集构建时不存在的功能。请参阅此链接和以下报价:

“为了避免浪费内存,Unity还支持.NET 2.0子集API配置文件。这与Mono“monotouch”配置文件非常相似,因此“monotouch”配置文件的许多限制也适用于Unity的.NET 2.0子集配置文件。(有关“monotouch”配置文件限制的更多信息,请参见此处:)。为了节省内存,游戏中通常不需要的许多库例程被排除在此配置文件之外。但是,这也意味着依赖于这些例程的代码将无法正常工作。此选项可能是一种有用的优化,但您应该检查现有代码在应用后是否仍能正常工作。”


从您的问题来看,您似乎已尝试将其设置为正常的.NET 2.0,并且运行良好,因此您需要将其设置为正常的.NET 2.0,或者删除对未包含在子集中的例程的任何依赖性。

在我的案例中,问题属于可为空类型。我用的是这样的东西:

var i = Math.Max(1, SomeClass.NullableProperty ?? DefaultValue);