Подтвердить что ты не робот

Почему я не могу установить мой сервис (время выполнения выше загруженного времени выполнения)?

Итак, я построил службу на С#, и я пытаюсь использовать следующую команду для ее установки:

C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\installutil.exe MyService.exe >> installLog.txt

Он терпит неудачу. Когда я смотрю на installLog.txt, я получаю следующее:

Microsoft (R) .NET Framework Installation utility Version 2.0.50727.3053
Copyright (c) Microsoft Corporation.  All rights reserved.

Exception occurred while initializing the installation:
System.BadImageFormatException: Could not load file or assembly 'file:///C:\MyService.exe' or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded..

Такой же подход отлично подходит для установки другой сборки. Я чувствую, что это может быть потому, что тот, который терпит неудачу, был написан для .NET 4.0, а тот, который работает, находится в 3.5.

Есть ли у кого-нибудь опыт в этой проблеме?

4b9b3361

Ответ 1

Никто даже не приблизился к этому!

Вот что мне нужно сделать:

  • Щелкните правой кнопкой мыши проект службы в Visual Studio, перейдите в "Свойства"
  • Задайте "Объект запуска" для имени службы (для нее было установлено значение "(Не задано)" ).
  • Сохранить.
  • Построить
  • Попробуйте установить еще раз.
  • Это работает! Ура! Мы все можем вернуться домой.

Ссылка на статью проекта кода, которая помогла:

Ответ 2

Вы используете неправильный файл installutil.exe. Если ваше приложение построено на .Net 4.0. Используйте файл installutil.exe в папке 4.0.

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\installutil.exe

Ответ 4

Если вы компилируете на машине x64, обязательно зайдите в Configuration Mgr и измените сборку на x64. Конечно, вы хотите проверить, используете ли вы правильную версию InstallUtil.exe. g'luck.

Ответ 5

Для меня я просто щелкнул правой кнопкой мыши на exe, который я пытался установить, и нажал "Разблокировать"

Ответ 6

Вы пробовали просто набирать MyService.exe /install в окне командной строки в каталоге, содержащем вашу службу Windows? Это сработало для меня в прошлом. Вы также можете удалить службу Windows с помощью MyService.exe /uninstall.

Ответ 7

Я считаю, что вы ответили в своем вопросе:

"Эта сборка построена с помощью среды выполнения, более новой, чем текущая загруженная среда выполнения, и не может быть загружена."

Таким образом, вы могли бы скомпилировать среду выполнения с более новыми функциями (которые находятся в новых Framework), но компьютер, на котором вы его регистрируете, работает с более низкой версией.

Eg. компилировать для .NET 3.5, но потом установить службу на .NET 2.0 не имеет смысла.

Поскольку вы можете установить службы на конечном компьютере, я думаю, вы уже являетесь администратором. Поэтому просто обновите платформу .NET на этой служебной машине.

Ответ 8

У меня была та же проблема. Первоначально мой проект был очень длинным путем в папке D:\внутри папки отладки моего проекта. Проблема была решена, когда я переместил файл службы .exe в другое место с более коротким путем и начал с "C: \".

Я также использую этот командный файл для установки моих сервисов

@ECHO OFF

REM Directory for .NET 4. Check for other version directories.
set DOTNETFX2=%SystemRoot%\Microsoft.NET\Framework\v4.0.30319
set PATH=%PATH%;%DOTNETFX2%

echo Installing MyService...
echo ---------------------------------------------------
InstallUtil /i C:\ServiceFolder\MyService.exe
echo ---------------------------------------------------
echo Done.
pause

Ответ 9

Если вы пробовали все вышеперечисленное и все еще видите ту же ошибку, дважды проверьте, есть ли у вас 32-разрядное приложение или любые 32-разрядные библиотеки DLL, а ваш сервер - 64-разрядный сервер.