Those entries that you specify are not normal .NET framework assemblies. And they are automatically generated by tools. Two good reasons why they do not comply with the .NET naming convention. These are the PIAs, Primary Interop Assemblies. They contain declarations derived from the COM component type library converted to .NET metadata to facilitate CLR interaction with the COM component. Types in these PIAs have the [ComImport] attribute.
Tlbimp.exe is a tool used to automatically create these assemblies; the /primary command-line option generates PIAs. The ones that you received from Microsoft are slightly different from those that you get when you start Tlbimp.exe yourself. First, Microsoft includes a version resource in the assembly. In other words, the names of these PIAs are not the default name that Tlbimp.exe generates. Thus, you see that the build engineer at Microsoft typed /out for the command-line option. It is clear that he does not pay much attention to the corps.
Microsoft.msxml is the PIA for c: \ windows \ system32 \ msxml3.dll, which is very often used in earlier code to read and write XML documents. Microsoft.mshtml is the PIA for c: \ windows \ system32 \ mshtml.tlb, a type library for the DOM interface supported by Internet Explorer, and you will need one of them when you want to dig through the HTML elements of a web page. You can view these type libraries in their native format using the Oleview.exe tool, File + View Typelib. What you see looks very similar to what you see in the object browser, except that they are expressed in IDL, the interface description language, the language that was originally used to create these type libraries.
PIA is basically a historical artifact, the Embed Interop Type feature available with .NET 4 makes them unnecessary.
source share