Как я могу настроить мой проект установки для добавления сборки в GAC во время процесса установки? - PullRequest
1 голос
/ 04 марта 2011

Прежде всего, мне известно о , почему не отображается в диалоговом окне «Добавить ссылки». Я также знаю, как я могу вручную добавить его.

Что я хочу знать, так это то, как мне следует изменить Проект установки (в Visual Studio), чтобы сборка отображалась в диалоговом окне «Добавить ссылку». Должен ли я добавить новое целевое местоположение или пользовательское действие или что-то еще?

В настоящее время я просто поместил «Основной вывод» в «Папку кэша глобальной сборки»

Ответы [ 2 ]

4 голосов
/ 04 марта 2011

Вы изменяете проект установки, чтобы создать необходимые разделы реестра при установке и удалить их при удалении.

Обратите внимание, что в идеале необходимо также развернуть сборки в «правильной» папке установки, а затемиспользуйте эту папку развертывания в качестве целевой папки для ключа AssemblyReferences - так же, как Microsoft развертывает папки ссылочных сборок для своих компонентов.

Обновление

Вот ссылка на демонстрационное решение VS2010 Iподготовили для вас: https://docs.google.com/leaf?id=0Bw_NnV9fhgmgNGE0N2JjYWYtNmVlNC00YjZhLWJlMGMtMDAyMTllYzU4Y2Fi&hl=en&authkey=CPTv8bUI, который будет делать именно то, что вы хотите.

После сборки и запуска проекта установки сборка «AddReferenceDemo» появится на вкладке «Сборки \ Расширения» окна «Добавить».Справочный диалог.

Вот как я его построил:

  • Добавить первичный вывод в «Папку приложения» в представлении файловой системы.

  • Добавить основной вывод в специальную папку 'Global Assembly Cache Folder' (необязательно - только если выи файл в GAC)

  • В программе просмотра реестра добавьте ключи Software\Microsoft\.NetFramework\v4.0.30319\AssemblyFoldersEx\[ProductName] с помощью пользовательского интерфейса (вы должны создать каждый).[ProductName] здесь следует использовать дословно , поскольку это ярлык для любого имени продукта, заданного в свойствах проекта установки.

  • Добавить строковое значение по умолчанию под этим(т.е. без имени) со значением [TARGETDIR] - снова дословно скопировано.Обратите внимание, что в конечном итоге это будет установлен в любую папку установки, которую пользователь выберет при запуске вашего установщика.

Создайте и запустите установщик.

Также он не отображаетсяновая запись реестра будет удалена ever при удалении, даже если вы отметите ее как таковую.Возможно, это значение необходимо также пометить для удаления.

Обратите внимание, что установщик должен быть помечен как целевая платформа «x86», чтобы в зависимости от разрядности использовался правильный узел реестра (Software или Software \ Wow6432Node).целевой платформы.Неважно, развертываете ли вы сборки x64, - это битность установщика, который вы устанавливаете здесь, и это влияет на представление реестра и т. Д.

Надеюсь, это поможет.

0 голосов
/ 04 марта 2011

Диалоговое окно добавления ссылок (будь то оригинальное или расширенное из Productivity Power Tools) не выполняет поиск сборок в GAC.

Скорее он ищет папки, указанные в одном из нескольких мест в реестре (в зависимости от версии и профиля .NET Framework).

Например. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0\AssemblyFoldersEx

Однако я не думаю, что правила поиска папок четко определены, поэтому могут потребоваться пробные версии и ошибки.

...