【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
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Unity,当我们使用MySQL数据库时,我们需要借助mysql.data.dll这个库文件来连接和操作数据库。然而,有时在引入这个库文件时会遇到一些问题,导致它无法被正确加载。 "mysql.data.dll will not be loaded due to errors: unable to resolve"这个错误提示通常是由于以下几种可能原因引起的: 1. 缺少依赖项:在Unity引用mysql.data.dll之前,需要确保我们已经正确地安装了MySQL Connector/Net这个数据库连接器,并且将其路径添加到了Unity的引用列表。如果没有安装或者路径设置错误,就会导致无法解析这个库文件而加载失败。 2. 版本不匹配:mysql.data.dll的版本必须与MySQL Connector/Net的版本一致,否则可能会出现无法加载的情况。需要确保我们使用的dll文件与安装的Connector/Net版本兼容。 3. 平台兼容性问题:有时候,如果我们尝试在不兼容的平台上加载mysql.data.dll,也会导致加载失败的错误。因此,需要检查我们的Unity项目和MySQL Connector/Net之间的平台兼容性。 为了解决这个问题,我们可以尝试以下几个步骤: 1. 检查并确保正确安装了MySQL Connector/Net,并将其路径添加到Unity的引用列表。 2. 确认mysql.data.dll的版本与MySQL Connector/Net的版本相匹配,如果不匹配,升级或降级其一个以使它们兼容。 3. 检查Unity项目的平台设置,确保与Connector/Net兼容。 4. 尝试重新引入mysql.data.dll,并且在Unity重新设置其引用路径。 总之,我们需要确保正确安装了MySQL Connector/Net,并且版本与mysql.data.dll兼容。如果还是遇到无法加载的问题,可以查阅更多资料或者尝试使用其他的数据库连接方式。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值