当我将 DAI.dll 添加到资产文件夹时,我遇到了此错误。
当我尝试构建时会发生此错误。
UnityException:无法使用命令运行引用重写器 --target="Temp\StagingArea\DAI.dll" --additionalreferences="Temp\StagingArea","C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0 .17134.0\Facade","C:\Program Files (x86)\Windows Kits\10\References\10.0.17134.0\Windows.AI.MachineLearning.Preview.MachineLearningPreviewContract\1.0.0.0","C:\Program Files (x86) )\Windows Kits\10\References\10.0.17134.0\Windows.ApplicationModel.Calls.CallsVoipContract\3.0.0.0","C:\Program Files (x86)\Windows Kits\10\References\10.0.17134.0\Windows.ApplicationModel .SocialInfo.SocialInfoContract\2.0.0.0","C:\Program Files (x86)\Windows Kits\10\References.....(后面还有更多这样的内容)......
我使用的是 Visual Studio 2017 版本 15.7.3 和 Unity 版本 2017.2.0b7
我已经将DLL添加到unity的assets文件夹中。
这些是我的播放器和构建设置。
您需要统一更改设置(下图中的设置示例):
- 在 Unity 内的项目中找到您的 dll 文件。
- 单击它一次以突出显示它。
- 您将在检查器中看到 dll 选项
- 通常对于 HoloLens,您只需选择“WSAPlayer”
- 单击“应用”保存设置。
- Rebuild
Warnings
- 有时,您尝试包含的 dll 引用了其他未包含的内容,这就是它无法工作的原因,但错误将与您得到的错误不同。
- 有时您可能需要导入旧版本的 DLL。例如,我尝试导入 Newtonsoft.Json 11.0.2,但 11.0.2 引用的核心框架比 Unity 生成的解决方案更新。有办法更新它,但我不想每次都处理它,所以我发现我可以使用的最高版本是9.0.1(我不得不跳过11.0.2、11.0.1, 10.0.3、10.0.2、10.0.1)。
- 另外,请记住您应该包含 netstandard dll。
- 我通常手头有 UWP 测试项目来尝试用它来测试我的 dll。如果它在那里工作,那么这是一个很好的第一步,假设它没有依赖项,那么在将其导入到 Unity 后它可能会工作。
最后结果解决方法
- 您可以注释引用您的dll的代码
- 从unity构建项目,无需dll
- 在生成的UWP解决方案中,您可以正常添加dll,甚至使用nuget安装您想要的dll
- 注释你的代码。
- 构建您的解决方案,然后部署到您的设备或创建一个包以将其部署到设备或商店。
- 作为一种解决方法,这很有效。
- 这样做的一个问题是,如果删除了解决方案,则每次生成解决方案时都需要导入 dll 或安装 nuget。这很烦人,如果您与团队合作,当他们收到项目并认为它不起作用时,可能会感到困惑。这意味着您需要做更多的工作来沟通和部署。
- 第二期,Unity 正在从 .NET 后端转向 IL2CPP(我认为您不能在 CPP 生成的项目中执行此操作)。这意味着这是一个短期解决方法。
考虑升级到 Unity 2018.2
- 使用 .NET 4.X 而不是 .NET 3.4 等效版本使我的引用和与引用相关的问题以及使用更现代的 C# 代码的工作变得更轻松。
- 如果您安装 Unity Hub,则可以安装它并仍然保留 2017 版本。这将最大限度地降低考虑更新的风险。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)