Basically during development directories are a lot better. For distribution llbs may be handy.
Library structure
Pros
> * Unused files are automatically removed from library at save time.
This is not true. You have to load the top VI and selecte Save with Options to create a new directory structure or library which only contains the currently used VIs. This is the same for LLbs and directories.
> * Upgrading your software to newer LV versions is easy because libraries can hold all the device drivers as well
I think you talk about instrument drivers. Keeping them in a subdirectory to your project dir would achieve the same.
* Moderate compression of maybe 10 - 30 %. Nothing really to write home about.With harddisks costing dollars per GB and the fact that decompressing will also take performance everytime LabVIEW needs to load the VI into memory. For archiving purposes it is a good idea to ZIP up the entire source code tree anyhow.
Cons
> * Returning the files to directories can't be done, or at least I don't know how.
Wrong as pointed out.
> * Referencing a file inside the library might be possible, is it? I think not.
With VI server for sure. If you talk about accessing in in Explorer this is possible too. LabVIEW 7 and later has a feature in Options which installs a shell extension which allows you to browse LLB files (and see the VI icons of any LabVIEW file in the Explorer)
> * If naming is not done correctly, it can be a drag to find a certain file from large library.
Again with above shell extension (assuming you use Windows ;-) this problem is eased upon.
* Source code control won't work easily.
Directory structure
Pros
> * Easy to group logical set of files to different directories
Yes!
> * With dynamic calls, run time editing is possible
No difference to LLBs. You just have to consider that LLBs are handled by LabVIEW like an additional directory level with the LLB name as directory name.
* Source code control is much more effectively possible
Cons
> * Upgrading LV version changes device drivers to new version also. They may but more probably may not work.
No difference to when using LLBs. You will need to keep the instrument drivers together with your project for that to work, but that is also what is happening when they are copied inside the LLB. LabVIEW has also no preference to use VIs in an LLB instead of in a directory. It simply will try to load the VI from where it was last located when the calling VI was saved and if not found will start to search its standard paths indifferent if they are in LLBs or not.