Can anyone explain the major features of a VDPROJ file?
Asked Answered
F

1

21

I'm sure there must be some documentation on MSDN somewhere, but I couldn't find it. It looks like some subset/variation of JSON. Really, this question grew out of something that has always bugged me: what do all the 8:s and 3:s mean? Is this some a version number of some kind? Maybe a typing scheme? Every VDPROJ excerpt I've ever seen is filled with these "eight-colon" and "three-colon" prefixes, but this is not the sort of question search engines are really good for.

"DeployProject"
{
"VSVersion" = "3:800"
"ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}"
"IsWebType" = "8:FALSE"
"ProjectName" = "8:ProjectNameRedacted"
"LanguageId" = "3:1033"
"CodePage" = "3:1252"
"UILanguageId" = "3:1033"
"SccProjectName" = "8:"
"SccLocalPath" = "8:"
"SccAuxPath" = "8:"
"SccProvider" = "8:"
    "Hierarchy"
    {
        "Entry"
        {
        "MsmKey" = "8:_02F97BB7BD104F1AAA1C97C854D5DC99"
        "OwnerKey" = "8:_UNDEFINED"
        "MsmSig" = "8:_UNDEFINED"
        }
...

If anyone just wants to berate my pitiful Google-fu, that's fine too.

Flummery answered 4/6, 2012 at 18:11 Comment(7)
reliable info on the format/schema of vdproj has always been illusive, and just as an aside, don't get into using them since it appears vs2010 may be the last version with it .. blogs.msdn.com/b/buckh/archive/2011/03/17/…Bearwood
Haha, yeah I saw that when I was digging into an issue I'm having today. Wish I had seen that blog post a month ago, but it's too late now.Flummery
I dont understand why this question was closed as 'not constructive' Is it really not constructive to seek answers on the structure of these files, and what their contents means? Surely someone must know either through 'facts, references, or expertise'. Im currently in need to finding out what information is held inside of these files, and some insight from someone who knows or a link would have been nice... but evidently not constructive.Irade
It's kind of a stretch, but I'm guessing the question was too vague, making it difficult to answer. It's a shame, it would have been great to learn anything about vdproj files. What I want to know is how casperOne even found this question after a year and a half.Flummery
Constructive questions are marked not constructive ??? Perhaps those who marked it, didn't bother knowing what it is all about...Throughway
@Throughway Yeah the mods can be terrible here sometimes.Flummery
As for the subj: 8: and 3: are likely to be a datatype, where 8 stands for string and 3 for integer.Amen
V
3

As @R. Matveev pointed out, the prefix numbers likely indicate the type of data stored in the property. This would be useful when deserializing the file into an object structure.

I doubt the source code which Visual Studio used to read/write the files was ever made open source, so it's no wonder that web searches returned nothing.

The best I could find was this page on OLE Automation data types, which may not have been the actual constants, but the data types seem to match the values in the *.vdproj file.

2.2.7 VARIANT Type Constants

typedef  enum tagVARENUM
 {
   VT_EMPTY = 0x0000,
   VT_NULL = 0x0001,
   VT_I2 = 0x0002,
   VT_I4 = 0x0003, // 4-byte signed integer
   VT_R4 = 0x0004,
   VT_R8 = 0x0005,
   VT_CY = 0x0006,
   VT_DATE = 0x0007,
   VT_BSTR = 0x0008, // BSTR (string data)
   VT_DISPATCH = 0x0009,
   VT_ERROR = 0x000A,
   VT_BOOL = 0x000B, // Boolean value
   VT_VARIANT = 0x000C,
   VT_UNKNOWN = 0x000D
   ...
 } VARENUM;
Vagary answered 13/6, 2018 at 23:12 Comment(1)
Pretty impressive sleuthing. When I originally asked the question I was hoping for a more involved answer, but since that was six years (!) ago I guess this is as good as it's going to get. Solved.Flummery

© 2022 - 2024 — McMap. All rights reserved.