StaffanL Posted August 25, 2017 Report Share Posted August 25, 2017 In my build specification I have a defined Pre-Build action. In this Pre-Build action I want to generate a list of callers for a specific .vi. I do this by having a static vi-reference to the vi and getting the property "Callers' Names". When I run the Pre-build action vi it does generate the list correctly. But when I let the Pre-Build action vi be called at the start of a build, the list comes up empty. My guess is that this is because when running the Pre-Build action from the build, it does not truly exist within the project, and so there are no callers of the .vi in the namespace the Pre-Build action currently exists in. Does anyone have a cleaver way around this? Can I force the Pre-Build action to be executed "within my project" somehow? The background is that I want to generate a list of a specific set of dynamically loaded classes to be able to activate/deactivate. The only thing connecting these classes to each other is that they all use the same .vi in their create method and therefore the only way I can think of to generate this list is to find callers. In the Labview environment, all of these classes are loaded and I can therefore get the list directly by "find callers". Since the classes are dynamically loaded however I can not do this at run-time in my .exe before loading them. I therefore want to generate the list. My current workaround is that I generate this list by running a vi manually before I start my build. This is not very elegant as it can easily be forgotten by me or any of my coworkers. Quote Link to comment
candidus Posted August 25, 2017 Report Share Posted August 25, 2017 Yes, the builder runs in a different application context. But you can open your project from the Pre-BuildAction.vi, invoke GetAllDescendants until you find your VI and then get its callers. That should work. Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.