Почему я не могу установить мой сервис (время выполнения выше загруженного времени выполнения)?
Итак, я построил службу на С#, и я пытаюсь использовать следующую команду для ее установки:
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.
Есть ли у кого-нибудь опыт в этой проблеме?
Ответы
Ответ 1
Никто даже не приблизился к этому!
Вот что мне нужно сделать:
- Щелкните правой кнопкой мыши проект службы в Visual Studio, перейдите в "Свойства"
- Задайте "Объект запуска" для имени службы (для нее было установлено значение "(Не задано)" ).
- Сохранить.
- Построить
- Попробуйте установить еще раз.
- Это работает! Ура! Мы все можем вернуться домой.
Ссылка на статью проекта кода, которая помогла:
Ответ 2
Вы используете неправильный файл installutil.exe. Если ваше приложение построено на .Net 4.0. Используйте файл installutil.exe в папке 4.0.
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\installutil.exe
Ответ 3
Для тех из вас, кто не находит, что это исправляет их проблему, вам нужно посмотреть в условиях запуска файла .vdproj и изменить платформу .NET на 4: http://www.alexjamesbrown.com/uncategorized/deploying-net-4-project-error-1001-system-badimageformatexception/
Ответ 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-разрядный сервер.