Unity在Unity中使用Apose.Word报“The document appears to be corrupted and cannot be loaded.“的一个解决方案

Posted Saint_Louis

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity在Unity中使用Apose.Word报“The document appears to be corrupted and cannot be loaded.“的一个解决方案相关的知识,希望对你有一定的参考价值。

在Unity里使用Apose.Word做文档处理时遇到一个问题,在Editor中代码跑得好好的,但是一打包成可执行程序,在构造Document实例时就会报错:

NullReferenceException: Object reference not set to an instance of an object
  at ​ ..ctor (System.IO.Stream , System.Text.Encoding ) [0x0005c] in <3744d28b9011402ac2d2d8a596ab4432>:0 
  at    . (System.IO.Stream , System.Text.Encoding ) [0x00000] in <3744d28b9011402ac2d2d8a596ab4432>:0 
  at Aspose.Words.Document. (System.IO.Stream , Aspose.Words.LoadOptions ) [0x0007e] in <3744d28b9011402ac2d2d8a596ab4432>:0 
Rethrow as FileCorruptedException: The document appears to be corrupted and cannot be loaded.
  at Aspose.Words.Document. (System.IO.Stream , Aspose.Words.LoadOptions ) [0x00118] in <3744d28b9011402ac2d2d8a596ab4432>:0 
  at Aspose.Words.Document. (System.IO.Stream , Aspose.Words.LoadOptions ) [0x00061] in <3744d28b9011402ac2d2d8a596ab4432>:0 
  at Aspose.Words.Document..ctor (System.String fileName, Aspose.Words.LoadOptions loadOptions) [0x000a2] in <3744d28b9011402ac2d2d8a596ab4432>:0 
  at Aspose.Words.Document..ctor (System.String fileName) [0x00000] in <3744d28b9011402ac2d2d8a596ab4432>:0 
  at ConsoleApp1.Program.Main (System.String[] args) [0x00019] in <34b337260559449a931b945d69583ede>:0 

找了半天问题,最后发现是Aspose.Word中有部分依赖没有导入,解决方法:

1. 找到当前API库文件夹
首先确定ProjectSetting -> Player -> Other Settings -> Api Compatibility Level,如果是.NET Standard 2.0,库在Editor安装路径\\Editor\\Data\\MonoBleedingEdge\\lib\\mono\\2.0-api中;如果是.NET 4.x,库在Editor安装路径\\Editor\\Data\\MonoBleedingEdge\\lib\\mono\\4.5中。

笔者这里使用的是4.5的库,如果还不行可以多试试几个不同版本的库

2.复制缺失的dll文件
在库文件夹中找到I18N.*文件

将这些dll文件↑ 复制到可执行程序根目录↓

之后,错误消失,功能恢复正常。最后提供我的环境参数:

  • Windows 10 专业版 19043.1466
  • Unity 2020.3.1f1c1 Personal
  • Aspose 18.12

iOS编译Unity3d文件报错 Permission denied

  最近在尝试Unity3d的使用,毕竟Unity可以很好的编译出iOS代码,只用我们正常进行打包就好了。

  这里遇到了个问题,分享一下。

  Archive快结束的时候,报了三个错误,类似于

  /Users/sciyonSoft/Library/Developer/Xcode/DerivedData/Unity-iPhone-ghjhxtadvpljitbubdnbjvnxumck/Build/Intermediates/Unity-iPhone.build/Release-iphoneos/Unity-iPhone.build/Script-033966F41B18B03000ECD701.sh: line 2: /**** 文件地址 ****/【报错文件名】.sh: Permission denied   

  百度了很多,并没有到点子上,最后在stackoverflow上看到了类似的,附上地址:https://stackoverflow.com/questions/20200720/cordova-xcode-build-failed-permission-denied

  遇到了这个问题,需要使用到终端,cd到【报错文件名】.sh文件所在目录,即:cd /**** 文件地址 ****/【报错文件名】.sh 的上一级

  然后输入 chomd +x 【报错文件名】.sh 或者 sudo chomd +x 【报错文件名】.sh

  这样就解决问题了。

以上是关于Unity在Unity中使用Apose.Word报“The document appears to be corrupted and cannot be loaded.“的一个解决方案的主要内容,如果未能解决你的问题,请参考以下文章

iOS编译Unity3d文件报错 Permission denied

Unity打包报错 com.android.buil.gradle.internal.tasks.workers$ActionFacade

关于在将暴风SDK倒入unity中运行程序出现报错问题

UNITY如何使用自制DLL?

unity2d转微信小程序报错

ios原生嵌入unity