Partial Project Libraries
- Updated2025-07-23
- 3 minute(s) read
A partial project library is a copy of a project library that uses the same qualified name as the original project library but includes references to only a subset of the VIs the original project library references.
When you attempt to redeploy VIs, the build in the TestStand Deployment Utility can fail when you attempt to include a partial project library and the original complete project library or when you attempt to include two copies of the same VI on the system. When you deploy custom LabVIEW-based step types to a development system and then attempt to include the step types in a new deployment, the build might fail.
Encountering Broken VIs with Partial Project Libraries
You might encounter broken VIs in partial project libraries in the following situations:
- Loading a VI that is part of a complete project library you load after loading a partial project library that does not contain the VI.For example, the complete project library <vi.lib>\Analysis\NI_AALBase.lvlib references <vi.lib>\Analysis\baseanly.llb\Mean.vi and <vi.lib>\Analysis\baseanly.llb\Median.vi. A deployment for a test system that requires only Mean.vi includes a partial project library named Image\NI_AALBase.lvlib that references only Image\Mean.vi. On a test station computer that includes the LabVIEW development system, the test system loads Image\Mean.vi, which in turn loads the partial project library Image\NI_AALBase.lvlib. If the test system loads <vi.lib>\Analysis\baseanly.llb\Median.vi after it loads Image\Mean.vi, LabVIEW tries to load the project library for Median.vi, locates the partial project library named NI_AALBase.lvlib in memory, and tries to use the partial project library as the project library for Median.vi. Because the partial project library in memory does not include a reference to Median.vi but shares the same name as the project library that does contain Median.vi, LabVIEW flags Median.vi as broken. Closing all VIs in memory unloads the partial project library Image\NI_AALBase.lvlib so you can reload Median.vi correctly because when LabVIEW loads <vi.lib>\Analysis\baseanly.llb\Median.vi, it loads <vi.lib>\Analysis\NI_AALBase.lvlib, which includes references to Median.vi. Loading Image\Mean.vi after you load <vi.lib>Analysis\baseanly.llb\Median.vi does not break Image\Mean.vi because <vi.lib>\Analysis\NI_AALBase.lvlib includes a reference to Mean.vi but cross-links <vi.lib>\Analysis\NI_AALBase.lvlib to reference Image\Mean.vi. You can avoid this issue by using packed project libraries that contain the VIs the test system requires. All files in a packed project library, including project libraries, use qualified names that begin with the name of the packed project library to avoid colliding with the names of files already in memory, such as partial project libraries.
- Building a LabVIEW user interface and enabling the Remove unused members of project libraries option on the Additional Exclusions page of the Shared Library Properties dialog box in LabVIEW. Launching the LabVIEW user interface loads the partial project libraries you create. If you configured the LabVIEW Adapter to use the LabVIEW Run-Time Engine (RTE) to run VIs and the version of the RTE matches the version of the RTE the user interface uses, LabVIEW returns broken VI errors when you execute a sequence file that includes a VI a project library references but the partial project library the user interface loaded does not include a reference to that VI. You can avoid this issue by disabling the Remove unused members of project libraries option and rebuilding the LabVIEW user interface.
- Loading multiple deployments that reference partial project libraries that have the same namespace but contain a different set of VIs. You can avoid this issue by building all VIs into packed project libraries with different names for each deployment to prevent name collisions among references to partial project libraries from different deployments. You can also call LabVIEW code modules in the context of different LabVIEW projects for each deployment because names of VIs and project libraries you call in the context of a project do not collide with full or partial project libraries loaded in a separate context.