Cross-cutting Tip #8
The file that is in every package and in no unpacked folder
Every solution package carries a [Content_Types].xml that no unpacked folder ever has, and it names the exact parts the import will read.
Every solution package carries a [Content_Types].xml, and no unpacked solution folder ever has one.
It is the package’s list of parts, written in the container’s vocabulary rather than the platform’s:
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
<Default Extension="xml" ContentType="application/octet-stream" />
<Override PartName="/WebResources/example_form-scriptjsAEFB6A9A-0EA4-F111-B8DC-7CED8DA8A791"
ContentType="application/octet-stream" />
</Types>
Three hundred and twenty-two bytes, naming the one part that is not an XML file, with a default that covers the ones that are. Pack the folder that package unpacked to, and this member comes back byte for byte - the same default, the same override, the same GUID, because it is one package compared with itself.
pac solution unpack never writes it, so it cannot live in
your repository and you cannot break it by editing the folder. pac solution pack always writes it, so
it turns up in every artifact you build. It is the only member of the package that describes the
package.
If you compare two packages part by part to find what changed, this is the part that will never tell you anything. It is also the part nobody remembers when a package is assembled by hand - and the one that says what the other parts are.