Sorry about this long post. Summary at the bottom! I am upgrading a project to 2018.3 and having various issues with package manager and the ScriptAssemblies folder. I think some of these issues are related to how we compile using dlls and import them to Unity. I am interested in hearing Unity's position on how to best handle external compilation with packman dependencies. With the addition of PackMan it is now necessary to import dlls from Unity's ScriptAssemblies folder in order to write code against it, and I'd like to know how Unity expects this to work. Our workflow up until now has been to add ScriptAssemblies to our search path, and this has been very stable for a while. This is necessary for writing code against, say, TextMeshPro. But 2018.3 seems to be different. It seems that in a recent-ish version the behaviour of ScriptAssemblies has been modified to wipe the directory. It seems to do this upon crash, but also upon TypeLoadException. For example if a nuget dependency accidentally gets added to both the output and Editor/ folders then it seems Unity wipes the ScriptAssemblies folder and it makes a bad situation worse. PackMan doesn't seem to recover well from this. Sometimes it'll just not update, and I find that I have to pick a package and choose 'Reimport' to revive it. Knowing when/what triggers a ScriptAssemblies wipe is kind of important if you are compiling against it. When it wipes I can't compile in Rider/VS because the deps disappear. I would like to know what does this, and also if any of these behaviours are considered to be bugs and issues. There is an issue with the ScriptAssemblies getting wiped at startup, then loading in external dlls that depend on them. Unity will emit an error that looks like: Code (CSharp): Assembly 'Assets/lib/myLibrary.dll' will not be loaded due to errors: Unable to resolve reference 'SomeOtherLibrary'. Is the assembly missing or incompatible with the current platform? What seems to be happening is that my dlls are loaded, then they throw the exception because the given library it depends on doesn't exist. Then Unity compiles and the dlls exist in ScriptAssemblies, then I *think* everything is ok? It would be nice if unity could load the dlls *after* the ScriptAssemblies have been regenerated and not throw the error. Lastly we have a real chicken and egg problem with package manager. We need it to compile its dlls so we can compile ours. We constantly get into weird states because of this. Ideally I would like to run package manager somehow to compile these dlls without necessarily running unity. This would be a huge boon. Packman really should be its own binary imho, which is controlled by unity. So in Summary: * What are the best practices for compiling code externally that relies on code in packages? * What are the situations in which unity decides that it should wipe ScriptAssemblies? * Are any of these situations bugs? * Can we...not do this? * Or put packages in their own folder? * Feature Request: Make PackMan its own binary. Apologies for the long post. Thanks!