LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

lvclass file: What's stored in NI.ClassItem.ConnectorPane?

Hi!

 

We have a project with a base class,  child classes, grand child classes, and so on.

For classes, VIs and Controls, the "separate compiled code" option is activated.

SVN is used as version control system

 

Now, we commit the entire project (excluding *.aliases, *.lvps) to SVN on one PC.

On a second PC, all local changes are reverted, and an SVN update is done. The files should then be identical to those on the first PC.

When starting the project on the second PC, LabVIEW 2017 modifies most of the *.lvclass files.

This started to happen just recently, after using the same repository for years.

 

Since *.lvclass files are XML, I tracked down the modification: LV changes the binary content of the tag <Property Name="NI.ClassItem.ConnectorPane" Type="Bin"> for just one (and always the same) dynamic dispatch class VI. The modification is just about 3 bytes spread over the content, which is around 1000 bytes long.

For some classes, the file is not  modified, though they also override this member VI.

Now, I'm wondering why that happens. I'd say the connector pane is just the terminal layout, the controls linked to the terminals, and further properties like dynamic dispatch, required, and so on. But those are identical for a dynamic dispatch VI across the class structure. The only difference is that each class has its own class object linked to the terminal,  but the class object itself should be defined in an other property, NI.LVClass.FlattenedPrivateDataCTL.

 

So I'm wondering what data this property contains, to find the reason for those changes.

 

Any idea?

Message 1 of 3
(1,465 Views)

@Sebastian.Weber wrote:

Now, we commit the entire project (excluding *.aliases, *.lvps) to SVN on one PC.

On a second PC, all local changes are reverted, and an SVN update is done. The files should then be identical to those on the first PC.


Usually, yes.

 

I'm not sure if that is always the case. When committing, SVN might decide to merge text files. .lvclass files are text... You'll have to configure SVN to not do this (by marking .lvclass, .lvproj and other LV text files as binary).

 

These situations are hard. They are in fact composed of several issues: How did this happen? How to avoid this? How to fix this? How to replicate this? Even what exactly is the issue (still a kudo for formulating it so well)? And all in very unlikely circumstances (or it wouldn't be a rare problem).

 

Intuitively, I put my bet on a SVN (merge) issue, corrupting one or more .lvclass files.

 

Not too helpful... Sorry about that.

0 Kudos
Message 2 of 3
(1,429 Views)

@Sebastian.Weber wrote:

 

When starting the project on the second PC, LabVIEW 2017 modifies most of the *.lvclass files.


To be clear, I assume by this you mean that if you close the project, LV asks you to save the files because they have changes, not that it modifies the files automatically upon opening.

 

I don't remember running into anything like that when opening projects from other computers (although it's possible it happens, as I don't do it that much), but it is an annoyance when I make change X to a class and then a diff before commit on the class file shows connector pane changes in unrelated VIs in the class. I usually just ignore it and let it be, so I never tried figuring out the binary data in that element.

 

A search can help somewhat - https://lavag.org/topic/20455-lvclass-files/

AQ says there that it includes "types, layout, requirements, inplaceness, and constantness". Presumably things like layout and requirements wouldn't change between PCs, but things like types or inplaceness might if you have different versions of dependencies, etc., or maybe different optimization levels?


___________________
Try to take over the world!
0 Kudos
Message 3 of 3
(1,401 Views)