Служба WCF как проблема Службы Windows (Windows 7) - PullRequest
7 голосов
/ 25 октября 2010

Я выполнил шаги здесь , чтобы сделать мою существующую службу WCF (уже отлично работающую в качестве консольного приложения) также службой Windows, на моей машине с Windows 7, которая также является моей машиной для разработки.

Независимо от того, что я пытался, при выполнении последнего шага использования installutil, я получаю следующее сообщение в командной строке:

Исключительная ситуация при инициализации установки:
System.BadImageFormatException: Не удалось загрузить файл или сборку 'file: /// [путь сюда]' или одну из ее зависимостей.
Предпринята попытка загрузить программу с неверным форматом.

Мой основной класс консольного приложения наследуется от ServiceBase и реализует методы OnStart и OnEnd.

Я добавил ProjectInstaller класс, наследуемый от System.Configuration.Install.Installer, помеченный атрибутом [RunInstaller(true)] и кодом, который они предоставили в конструкторе.

Что я уже пробовал, что не упомянуто в статье выше?

  1. Запуск командной строки от имени администратора
  2. Переход в каталог, где находится и работает EXE-файл оттуда установить
  3. Предоставление сильного ключа к файлу EXE и всем DLL, которые он использует

Кроме того, я не получаю никакого файла журнала даже при указании его с помощью /LogFile=myLog.txt.

Любые идеи приветствуются, спасибо.

Ответы [ 2 ]

6 голосов
/ 25 октября 2010

Это пахнет как 32- / 64-битная проблема.

Является ли ваша машина 64-битной Windows 7 случайно? Ваш сервис как-то ссылается на что-то 32-битное, как старый COM-компонент или что-то подобное?

Вам может понадобиться скомпилировать ваши вещи на платформе x86 в Visual Studio, чтобы заставить их работать должным образом ...

3 голосов
/ 26 октября 2010

Исключения BadImageFormat обычно возникают, когда сборка загружается в более старую версию .NET Framework (сборка 4.0 на компьютере без 4.0). Поскольку вы развертываете на той же машине, я предполагаю, что вы не используете правильную версию installutil.

Убедитесь, что вы используете программу установки, расположенную здесь: C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319

...