首页 > 解决方案 > 为 Unity 编译 DLL 时使用什么目标框架和引用

问题描述

我有一些我在 Unity 2019.4 中通常使用的脚本,并且还编译成单独的 DLL 以在没有源代码的情况下分发。一切正常,直到我开始System.Array.Empty<T>()在几个地方使用,这在 Unity 中运行良好,但阻止我编译单独的 DLL。

那么我应该使用什么目标框架和参考来为 Unity 2019.4 编译 DLL?

标签: c#.netunity3d

解决方案


我通过复制 Unity 为装配定义生成的一个 csproj 文件并删除我不需要的东西来解决了这个问题。

主要区别似乎是包含此块:

      <PropertyGroup>
        <NoConfig>true</NoConfig>
        <NoStdLib>true</NoStdLib>
        <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>
        <ImplicitlyExpandNETStandardFacades>false</ImplicitlyExpandNETStandardFacades>
        <ImplicitlyExpandDesignTimeFacades>false</ImplicitlyExpandDesignTimeFacades>
      </PropertyGroup>

我猜这允许它定义自己对 , 的引用mscorlib.dllnetstandard.dll并且System.Core.dll不会与框架导入的引用发生冲突。


推荐阅读