Как добавить манифест в.NET DLL?
У меня есть проект библиотеки классов aC#, который использует COM DLL, зарегистрированный в системе. Теперь я хочу развернуть COM DLL как параллельную сборку, поэтому мне не нужно регистрировать ее или мешать другим приложениям, которые могут использовать другую версию DLL.
Я добавил app.manifest в проект C#, используя меню добавления нового элемента, но я не уверен, что делать дальше. В свойствах проекта / приложения / значка и манифеста раскрывающийся список манифеста отключен. Я не знаю, как пройти через это. Я добавил файл манифеста, почему его нет в выпадающем списке?
У меня есть манифест для dll COM, который работает с приложениями C++, и я думаю, что я держу это как есть. Теперь мне нужно знать, как редактировать app.manifest для проекта C#. Я начну с добавления хорошо известного элемента зависимости. Но мне нужен учебник о том, как это настроить, я нигде не рассматриваю его.
Я использую VS2008
3 ответа
Вы определенно можете вставить манифест в.net dll. Содержимое манифеста приложения не все относятся к сборке, но некоторые из них. Например, записи UAC не имеют смысла для манифеста компонента, но ассемблер делает.
Используя инструмент MT.EXE, вы можете встроить манифест в dll:
Вставить:
mt.exe -manifest filename.dll.manifest -outputresource:filename.dll;#2
Выдержка:
mt.exe -inputresource:filename.dll;#2 -out:filename.dll.extracted.manifest
Вот больше ссылок на связанную информацию:
Еще один пример встраивания dll: http://msdn.microsoft.com/en-us/library/ms235591(v=VS.100).aspx
Краткое руководство по SxS: http://msdn.microsoft.com/en-us/library/ms973915.aspx
Единственное, что мешает вам добавить манифест в dll NET, - это Visual Studio IDE. Его можно легко обойти, напрямую изменив.csproj - добавьте свойство ApplicationManifest в соответствующую группу свойств. Добавьте манифест в exe-проект и проверьте.csproj для деталей.
Гораздо проще, чем использовать MT.exe, который заменит существующий манифест (чего обычно не требуется).
В большинстве приложений манифест обычно применяется к EXE-файлам / хост-приложениям - так как это уровень, на котором понимают, как все зависимые сборки и их возможности сочетаются друг с другом.
Например, в случае установки маркера UAC с помощью элемента trustinfo/security/requiredPrivileges/requiredExecutionLevel, случай, когда зависимая сборка законно может сказать "я говорю, что мы все понимаем UAC", не имеет смысла.