繁体   English   中英

如果在 Unity 中更改了一个脚本,哪些程序集将被重新编译?

[英]Which assemblies will be recompiled if one script changed in Unity?

在Unity中,可以使用汇编来加速编译。
我曾经相信,如果一个脚本发生变化,只会重新编译包含它的程序集。

今天做了一些实验,发现不仅是containing assembly被重新编译了。
例如,Assembly-CSharp.dll 大部分时间都会重新编译。

假设脚本“a”属于程序集“A”。
根据我的实验,添加/删除公共字段或方法,引用“A”的程序集将被重新编译。 修改公共方法的内容不会导致重新编译引用程序集。 添加/删除/修改私有事物也不会导致重新编译引用程序集。

那么,如果我在 Unity 中更改一个脚本,哪些程序集将被重新编译?
有没有关于这方面的文章或书籍?

这都是关于依赖关系的。 Unity使用了c#,它使用了CSharpCompiler( 这里),你可以直接查阅MSDN来深入了解构建/编译过程。

有很多错综复杂的地方,但我会尝试解释基本情况,考虑到你有 2 个程序集 A 和 B

  • 在这种情况下,“A”和“B”是独立的,更改“A”中的任何代码只会构建“A”,而更改“B”只会构建“B”
  • “A”依赖于“B”,在这种情况下,更改“A”将仅构建“A”,但更改“B”将构建“B”,然后构建“A”
  • “A”依赖于“B”,但您已使用 Visual Studio 配置管理器将“B”排除在构建过程之外,在这种情况下,无论您更改哪个程序集,“B”都将永远不会被构建,并且将继续具有过时的代码

所以这个问题很快就会变得复杂,如果你有 5 个程序集,如果编译时间对你来说真的很重要,那么考虑构建代码是个好主意,这是一个很大的话题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM