How to add manifest to a .NET DLL?

P a u l picture P a u l · Dec 14, 2009 · Viewed 21.6k times · Source

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, or interfere with other applications that might use a different version of the dll.

I have added app.manifest to the c# project using the add new item menu, but I'm not sure what to do next. In the project properties/application/icon and manifest, the manifest drop down is disabled. I don't know how to get past that. I've added a manifest file, why is it not in the dropdown list?

I have a manifest for the COM dll that works with C++ applications, and I think I keep that as is. Now I need to know how to edit the app.manifest for the c# project. I will start by adding a known good dependency element. But I need a tutorial on how to set this up, I don't see it covered anywhere.

I am using VS2008

Answer

LowRider2112 picture LowRider2112 · May 7, 2011

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