说明:
使用Addressables打包出现如下报错
DirectoryNotFoundException: Could not find a part of the path ""
打断点发现资源路径与目标路径字符串非空,但是仍然提示报错。Library\com.unity.addressables下ab资源打出,但是仍然报错
查看DirectoryNotFoundException报错提示,完全没有头绪。
记着之前出现过的,于是把长的文件路径替换长短路径,得到解决。
想着能否不换成短路径而解决这个问题,下面是一些尝试:
对于网上的一些长路径设置
https://blog.csdn.net/cumai3211/article/details/109042466
进行测试,在cmd下,设置了LongPathsEnabled值为1,则mkdir命令成功;设置了LongPathsEnabled值为0,则mkdir命令提示错误
但是无论LongPathsEnabled是否设置为1,进行Addressable build时,使用separately pack,都会出现最开始的报错提示。
结论:
目前无法解决
可参考说明:
https://issuetracker.unity3d.com/issues/building-fails-when-trying-to-build-in-a-folder-with-too-long-of-a-name
unity官方说部分文件操作使用的api是32位下的,所以不支持长路径
在.NET 5官方文档对PathTooLongException有个说明,在4.6.2版本以下时,是不支持长路径的
https://docs.microsoft.com/en-us/dotnet/api/system.io.pathtoolongexception?view=net-5.0
unity2019与unity2020用的还是.NET 4.x版本的,所以大概率是用的4.6.2版本以下导致的不支持长路径
综上,当出现长路径时,请把路径长度缩减到260字节以内(往往250左右就不行了)