2009-12-14 3 views
9

У меня есть проект библиотеки классов C#, который использует COM-DLL, зарегистрированную в системе. Теперь я хочу развернуть COM-dll как бок о бок сборку, поэтому мне не нужно ее регистрировать или вмешиваться в другие приложения, которые могут использовать другую версию dll.Как добавить манифест в .NET DLL?

Я добавил app.manifest в проект C#, используя меню добавления новых элементов, но я не уверен, что делать дальше. В свойствах проекта/приложении/значке и манифеста раскрытие манифеста отключено. Я не знаю, как это пройти. Я добавил файл манифеста, почему он не находится в раскрывающемся списке?

У меня есть манифест для COM-библиотеки COM, который работает с приложениями C++, и я думаю, что сохраняю это как есть. Теперь мне нужно знать, как редактировать app.manifest для проекта C#. Начну с добавления известного элемента зависимости. Но мне нужен учебник о том, как это сделать, я не вижу, чтобы он был охвачен где угодно.

Я использую VS2008

+1

Я вижу, что ящик манифеста включен для проекта exe. Не реализует ли проект библиотеки классов манифест? –

ответ

10

Вы можете встроить манифест в dll .net. Содержимое манифеста приложения не относится ко всей сборке, но некоторые делают. Например, записи UAC не имеют смысла для манифеста компонента, но assemblyIdentity делает.

Используя инструмент MT.EXE, вы можете встроить манифест в DLL:

Embed:

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

A SxS Пошаговое руководство: http://msdn.microsoft.com/en-us/library/ms973915.aspx

2

В большинстве приложений, манифест, как правило, применяется к Exes/приложений хозяевах - а это тот уровень, при котором один понимает, как все зависимые сборки и их возможности сетки вместе.

Например, в случае установки маркера UAC с помощью элемента trustinfo/security/requestedPrivileges/requestedExecutionLevel случай зависимой сборки, законно способный сказать «Я говорю, что мы все понимаем UAC», не делает смысл.

+0

Да, я понял это. Вы знаете что-либо о явном кэшировании ОС? –

+0

Извините, не знаю ничего о кешировании (OTTOMH догадывается: разве это не все, только что прочитанное из ресурсов EXE во время загрузки, и любое кэширование будет прозрачным - я думаю, вы не спрашивали, было ли это так просто!) –

+2

Это неверно , DLL могут содержать и активировать манифесты. Это просто нужно сделать вручную с помощью API контекста активации. –

Смежные вопросы