Visual Studio 2019 Integration
This is a continuation of the topic started in Visual Studio 2019 Integration - Example Project.
Embedded manifests can be examined using the Manifest Viewer tool included in the Manifest Maker Start menu subfolder.
This is the program manifest. Note that it contains unmanaged assembly references to clrDLL and comDLL and a direct DLL reference to winDLL.dll.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity name="cmdEXE.exe" version="1.4.1.0" type="win32" processorArchitecture="x86"/> <description>Built with: Side-by-Side Manifest Maker, Command Line (6.0.5334.0) (x64)</description> <description>Copyright: (c) Maze Solutions LLC. All rights reserved.</description> <description>Licensee: Maze Solutions LLC, www.manifestmaker.com</description> <description>License: 5 users license</description> <dependency> <dependentAssembly> <assemblyIdentity name="clrDLL" version="1.4.1.0" type="win32"/> </dependentAssembly> </dependency> <dependency> <dependentAssembly> <assemblyIdentity name="comDLL" version="1.4.1.1" type="win32" processorArchitecture="x86"/> </dependentAssembly> </dependency> <file name="winDLL.dll" hashalg="SHA1"> </file> </assembly>
This is the comDLL manifest #1, the DEF-manifest referenced above:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity name="comDLL" version="1.4.1.1" type="win32" processorArchitecture="x86"/> <description>Built with: Side-by-Side Manifest Maker, Command Line (6.0.5334.0) (x64)</description> <description>Copyright: (c) Maze Solutions LLC. All rights reserved.</description> <description>Licensee: Maze Solutions LLC, www.manifestmaker.com</description> <description>License: 5 users license</description> <file name="comDLL.dll"> <comClass clsid="{7D9C5675-0985-4E2F-BCE4-6E7DD25FDA90}" description="ComServer1 Class" tlbid="{319E3A5E-B729-4D50-8A40-C7D6923188EF}" threadingModel="both" progid="comDLL.ComServer1.1"> <progid>comDLL.ComServer1</progid> </comClass> <typelib tlbid="{319E3A5E-B729-4D50-8A40-C7D6923188EF}" version="1.0" helpdir="" flags="hasdiskimage"/> </file> <comInterfaceExternalProxyStub iid="{B67D3696-7462-4753-8454-E834C0E1DA06}" name="IComServer1" tlbid="{319E3A5E-B729-4D50-8A40-C7D6923188EF}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}"/> </assembly>
This is the comDLL manifest #2, the REF-manifest used to tell Windows what resources this DLL needs to initialize:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity name="comDLL" version="1.4.1.1" type="win32" processorArchitecture="x86"/> <description>Built with: Side-by-Side Manifest Maker, Command Line (6.0.5334.0) (x64)</description> <description>Copyright: (c) Maze Solutions LLC. All rights reserved.</description> <description>Licensee: Maze Solutions LLC, www.manifestmaker.com</description> <description>License: 5 users license</description> <dependency> <dependentAssembly> <assemblyIdentity name="Microsoft.Windows.GdiPlus" version="1.0.2600.0" type="win32" publicKeyToken="6595b64144ccf1df" processorArchitecture="x86"/> </dependentAssembly> </dependency> </assembly>
The clrDLL.dll unmanaged CLR manifest describes the unmanaged clrDLL assembly, the COM-visible assembly:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity name="clrDLL" version="1.4.1.0" type="win32"/> <description>Built with: Side-by-Side Manifest Maker, Command Line (4.4.4813.0) (x64)</description> <description>Copyright: (c) Maze Solutions LLC. All rights reserved.</description> <description>Licensee: Maze Solutions LLC, www.manifestmaker.com</description> <description>License: 5 users license</description> <clrClass name="clrDLL.ClrSampleClass" clsid="{A1B62C33-E218-469D-81C4-10D4F2C608F7}" progid="clrDLL.ClrSampleClass" threadingModel="Both"/> <file name="clrDLL.tlb"> <typelib tlbid="{43B2B214-C7A2-4718-8E5A-CC405D8DBDBA}" version="1.4" helpdir="" flags="hasdiskimage"/> </file> </assembly>
And, finally, the winDLL.dll REF-assembly:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity name="winDLL" version="1.4.1.0" type="win32" processorArchitecture="x86"/> <description>Built with: Side-by-Side Manifest Maker, Command Line (6.0.5334.0) (x64)</description> <description>Copyright: (c) Maze Solutions LLC. All rights reserved.</description> <description>Licensee: Maze Solutions LLC, www.manifestmaker.com</description> <description>License: 5 users license</description> <dependency> <dependentAssembly> <assemblyIdentity name="Microsoft.Windows.Common-Controls" version="6.0.2600.0" type="win32" publicKeyToken="6595b64144ccf1df" processorArchitecture="x86"/> </dependentAssembly> </dependency> <dependency> <dependentAssembly> <assemblyIdentity name="Microsoft.Windows.GdiPlus" version="1.0.2600.0" type="win32" publicKeyToken="6595b64144ccf1df" processorArchitecture="x86"/> </dependentAssembly> </dependency> </assembly>