Защо Visual Studio 2010 не ми позволява да избера персонализиран манифест?

Създавам DLL на C#, който бих искал да се вижда в COM без регистрация. Следвайки инструкциите другаде, генерирах нов файл "app.manifest" в проекта и го редактирах, за да включва COM информацията, от която се нуждая, а не общата UAC информация.

Освен че Visual Studio не ми позволява да го използвам вместо манифеста по подразбиране. Когато отворя свойствата на проекта, падащото меню на манифеста е деактивирано: Обърнете внимание, че падащото меню на манифеста е деактивирано.

Какво трябва да направя, за да избера и вградя персонализирания манифест, който добавих към проекта?

Редактиране: Файлът "app.manifest" е в папката Properties на проекта. Както е описано тук, за COM без регистрация трябва да променя Манифест от вграждане на манифест по подразбиране до използване на манифеста в Свойства. Освен че не ми позволява да променя тази настройка по някаква причина.

Редактиране 2: Падащото меню „Манифест“ е активирано, когато променя типа на изхода на конзолно приложение или на Windows приложение. Защо би било деактивирано за библиотека с класове, когато MSDN изрично посочва, че е необходим манифест за COM библиотеки без регистрация?


person Oblivious Sage    schedule 15.01.2015    source източник
comment
възможен дубликат stackoverflow.com/questions/4084585/   -  person DLeh    schedule 15.01.2015
comment
@DLeh Отговорът там обхваща създаването на манифеста, което вече направих. Проблемът ми е, че не ми позволява да вградя манифеста.   -  person Oblivious Sage    schedule 15.01.2015
comment
Правите го погрешно.   -  person Hans Passant    schedule 16.01.2015


Отговори (1)


Библиотеките с класове не трябва да използват това падащо меню, за да вградят манифест.

Важна забележка: Почти единствената причина да вградите манифест в C# библиотека по този начин е да го направите достъпен за използване чрез COM без регистрация. Ако не правите това, нямате нужда от манифест и тези стъпки не са за вас. Махай се.

Ако използвате Add -> New Item -> Application Manifest File, за да добавите файл app.manifest към проекта:

превъртете надолу в списъка с нови файлове, за да намерите файла с манифеста на приложението

...и да го запазите в корена на проекта (не в Properties или друга подпапка):

app.manifest не трябва да бъде вложен

... автоматично ще бъде вграден в DLL.

Можете да проверите дали е добавен автоматично, като използвате File -> Open -> File, за да отворите DLL, след като бъде изграден и потвърдите, че включва нещо, наречено RT_MANIFEST:

забележете, че DLL съдържа запис RT_MANIFEST

Специални благодарности на Hans Passant за предоставянето на цялата тази информация, макар и разпределени около половин дузина отговори на различни въпроси, а не всичко на едно място.

person Oblivious Sage    schedule 16.01.2015