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.

ACK_stoverflow
  • 3,148
  • 4
  • 24
  • 32
  • 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 .. http://blogs.msdn.com/b/buckh/archive/2011/03/17/visual-studio-setup-projects-vdproj-will-not-ship-with-future-versions-of-vs.aspx – curtisk Jun 04 '12 at 18:26
  • 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. – ACK_stoverflow Jun 04 '12 at 18:34
  • 16
    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. – Mark W Feb 18 '14 at 18:33
  • 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. – ACK_stoverflow Feb 19 '14 at 19:18
  • 1
    Constructive questions are marked not constructive ??? Perhaps those who marked it, didn't bother knowing what it is all about... – Ahmed Jul 03 '16 at 09:56
  • 3
    @Ahmed Yeah the mods can be terrible here sometimes. – ACK_stoverflow Jul 05 '16 at 05:50
  • 1
    As for the subj: `8:` and `3:` are likely to be a datatype, where 8 stands for string and 3 for integer. – Raman Sinclair Apr 13 '18 at 13:50

1 Answers1

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;
Dan Wilson
  • 3,937
  • 2
  • 17
  • 27
  • 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. – ACK_stoverflow Jun 14 '18 at 18:26