.netdllmanifestside-by-side

How to add manifest to a .NET DLL?


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


Solution

  • 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