Ошибка установки проекта установки Visual Studio 2008: «Не удалось загрузить файл или сборку» - PullRequest
1 голос
/ 07 апреля 2011

У меня проблема, которая, очевидно, была и у многих людей, только то, что сработало для других, еще не сработало для меня. Вот настройки:

VS2008 решение с 5 проектами, все нацелены на .NET 2.0:

  1. DLL A, нет ссылок на проекты
  2. DLL B, ссылки на DLL A
  3. Приложение Windows Forms, ссылки на DLL B
  4. Служба Windows, ссылки на DLL B
  5. Настройка проекта

То, что я хочу, чтобы произошло, - это то, что DLL A и DLL B установлены в GAC, но я получаю ошибку при установке:

Ошибка 1001. Не удалось загрузить файл или сборку 'DLL_B', версия 1.0.0.1, Culture = нейтральный, PublicKeyToken = 5e297270603814f4 'или одну из ее зависимостей. Системе не удалось найти указанный файл.

Из того, что я прочитал здесь и здесь и несколько других сайтов, я сделал следующее в произвольном порядке:

  • Повторно ссылался на все в моих проектах
  • Добавлены скомпилированные EXE-файлы вручную в проект установки (вместо использования «Первичного вывода» ... DLL A и DLL B появились как «Обнаруженные зависимости»)
  • В проекте установки -> Условия запуска -> установите .NET Framework на 2.0
  • В проекте установки -> Файловая система -> Запрошено установить обнаруженные зависимости в глобальную папку кэша сборок

Итак, я, наверное, что-то упустил. Может кто-нибудь помочь мне понять, что это такое?

Спасибо заранее.

1 Ответ

1 голос
/ 07 апреля 2011

Похоже, вы используете настраиваемое действие InstallUtil для установки и запуска службы Windows, и что эта служба Windows имеет зависимость, которая находится в GAC. Известно, что Winodows Installer ограничен тем, что файлы для WinSXS и GAC не устанавливаются до фазы фиксации, которая наступает после запуска настраиваемого действия (фаза отложенного выполнения)

Во-первых, вы должны знать, что пользовательские действия InstallUtil очень хрупкие и что для этого есть более эффективные способы. Во-вторых, вы никогда не сможете обойти проблему, которую я описал выше, за исключением одного: а) Установите для службы значение Авто и выполните перезагрузку или б) не устанавливайте сборку в GAC.

...