I have a c# class library project that uses a COM dll registered on the system. I now want to deploy the COM dll as a side-by-side assembly, so I don\'t have to register it,
In most applications, a manifest is typically applied to EXEs/host apps - as this is the level at which one understands how all the dependent assemblies and their capabilities mesh together.
For example, in the case of setting the UAC marker via the trustinfo/security/requestedPrivileges/requestedExecutionLevel element, the case of a dependent assembly legitimately being able to say "I say we all understand about UAC" doesn't make sense.
The only thing that prevents you adding a manifest to a NET dll is the Visual Studio IDE. It can be circumvented very easily by modifying the .csproj directly - add the ApplicationManifest property in an appropriate property group. Add a manifest to an exe project and examine the .csproj for details.
Much easier than using MT.exe, which will replace the existing manifest (which you usually don't want to happen).
You definitely can embed a manifest in a .net dll. The contents of an application manifest do not all apply to an assembly, but some do. For example, the UAC entries don't make sense for a component manifest, but assemblyIdentity does.
Using the MT.EXE tool, you can embed a manifest into a dll:
Embed:
mt.exe -manifest filename.dll.manifest -outputresource:filename.dll;#2
Extract:
mt.exe -inputresource:filename.dll;#2 -out:filename.dll.extracted.manifest
Here are more links on related info:
Another dll embed example: http://msdn.microsoft.com/en-us/library/ms235591(v=VS.100).aspx
A SxS walkthrough: http://msdn.microsoft.com/en-us/library/ms973915.aspx