The process of installing, configuring, and customizing Visual Studio to support development workflows across languages, platforms, and workloads.
No public Microsoft schema or published Microsoft-maintained implementation in the available documentation defines packages[].payloads[].size for the Visual Studio 2019 16.11 catalog, so it cannot authoritatively be interpreted as the byte length of payload.vsix or assigned to a particular signing stage.
What can be concluded
- The four
sizevalues are not the complete local VSIX lengths in bytes: the recorded values differ from the filesystem lengths. - Because each SHA-256 matches when calculated over the complete local
payload.vsix, the corresponding catalogsha256identifies the complete byte sequence of that local file. - That hash match does not establish that the adjacent
sizeproperty measures the same object. Fields within one payload record may have been generated at different pipeline stages or retained for different installer purposes. - Agreement between the catalog and
_package.jsonshows that the value is propagated consistently between those two metadata locations; it does not reveal its unit or semantic definition. - Nothing in these observations establishes corruption. They also do not authenticate the catalog or verify the VSIX signature.
A VSIX is an Open Packaging Conventions package containing binaries, supporting files, [Content_Types].xml, and a VSIX manifest—not merely its installed content.^1^ Microsoft’s signing documentation confirms that signing applies to the VSIX package and protects its contents, but it does not document how Visual Studio setup generates or updates the catalog’s payloads[].size field.^2^
Answers to the four questions
| Question | Supported answer |
|---|---|
| Unit | Not publicly specified for this Visual Studio catalog field. It should not be labelled “bytes” solely because it is an integer named size. |
| Referenced object | Not publicly specified. The data disproves equality with the complete local VSIX byte length for the four examples, but does not distinguish an unsigned artifact, selected archive members, installed content, compressed content, or another internal measure. |
| Measurement stage | Not publicly specified. The available VSIX signing documentation does not connect this catalog property to a pre-signing or post-signing operation. Therefore, “pre-signing size” remains a hypothesis rather than a documented explanation. |
| Expected relationship to the hashed file | No documented rule applicable to Visual Studio 2019 16.11 establishes that payloads[].size must equal the length of the object covered by payloads[].sha256. For these samples, it demonstrably does not, despite the hash match. |
The similarly named Microsoft NuGet catalog does explicitly define packageSize as the .nupkg size in bytes,^3^ but that is a different schema and cannot be transferred to the Visual Studio installation catalog. Likewise, Microsoft’s “Product and package schema reference” documents the MSBuild bootstrapper’s XML product/package format, not the Visual Studio Installer catalog JSON containing packages[].payloads[].^4^
Appropriate authoritative next step
Request clarification from the Visual Studio Setup engineering team through a Visual Studio Feedback ticket or Microsoft support case. Include:
- Catalog identity
VisualStudio/16.11.43+35706.149. - The four package IDs and versions.
- The exact catalog payload objects, including
fileName,url,size, andsha256. - The matching
_package.jsonrecords. - Filesystem lengths and independently calculated SHA-256 values.
- The precise questions: unit, measured object, generation stage, update rule, and whether Setup treats the field as validation data.
Ask specifically for the Visual Studio Installer catalog schema or the producer/consumer contract applicable to the 16.11 servicing channel. Without that contract or confirmation from the owning engineering team, assigning a pre-signing interpretation would be reverse engineering rather than an authoritative answer.
References