【解决】Copying assembly from ‘Temp/Assembly-CSharp.dll‘ to ‘...../Assembly-CSharp.dll` ....

开发平台:Unity
编程平台:Visual Studio 2017以上
使用语言:C#

问题描述:


原文Copying assembly from ‘Temp/Assembly-CSharp.dll’ to ‘Library/ScriptAssemblies/Assembly-CSharp.dll’ failed. Detailed error: Sharing violation on path
翻译将程序集从“Temp/Assembly-CSharp.dll”复制到“Library/ScriptAssemblies/Assembly-CSharp.dll”失败。 详细错误:在路径上共享冲突

注意:此类问题可能是由于频繁操作所导致的。

  • 根据实际出现情况,其在 物理硬件配置低 的设备上 或 Unity 早期编辑器版本 上出现频率较高。

关于此类问题


  每当一次程序编写行为结束、保存并返回 Unity 编辑器界面时,Unity 会执行一次新的程序集快速编译(详情可参考底层 AOT),新编译完成的程序集将支持以用于 Unity 编辑器运行时下逻辑表现。当出现此类问题时,应首先考虑编译过程问题。
  在确认无语法问题为前提的情况下,极可能是编译后,程序集在编辑成功后无法迁移至指定目录下所造成的。于是,重编译是当前有效的解决方案。

关于问题中路径


  如上描述提到 Temp 与 Library 两个目录。其中 Temp 目录用于存放临时资源文件缓存。Library 用于存放资源功能缓存。可理解是服务于 Unity 编辑器必要的资源缓存。在项目迁移过程中,该两目录文件夹可忽略。

解决方案


方案一:保存项目工程,重启当前Unity(有效)

  当出现一些由 Unity 编辑器自身所导致的问题时,重启是最有效的方式。

方案二:重载程序集(未确定绝对有效)

  • 第一种重载方式:适用于 2020版本以上。
    前往 Perferences -> External Tool 栏选择 “Regenerate project files” 选项重载程序文件。
  • 第二种重载方式
    代码内任意行添加注释 //This is a word 或 修改一处程序表达方式后,让 Unity 检测并重编译程序。

方案三:自写手动编译菜单项

  • 参考 UnityEditor API 创建手动编译入口。
    详细可参考 Github - Unity ToolBar Expand 等一些优秀的 Unity 编辑器扩展项目。
  • 前往资源商店下载 Complier(编译)相关的资产。
    作者有听说过一类 Visual Studio 自动编译的免费资产工具,其允许 Visual Studio 有修改操作时,Unity 后台同步编译。而非完成一次 Visual Code 编写后,返回 Unity 编辑器再编译。
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值