2015-03-27 7 views
1

У меня есть программа на C#, которая была создана как служба Windows. Я проверил эту последнюю неделю, и все получилось нормально, но сегодня я получаю сообщение об ошибке.Служба Windows: ожидается, что модуль будет содержать манифест сборки

Когда я пытаюсь установить с помощью Installutil.exe, я получаю ошибку:

Could not load file or assembly [file name] or one of its dependencies. The module was expected to contain an assembly manifest.

Перестройка проект не имел никакого эффекта. Я также заметил в диспетчере задач, что служба по-прежнему указана и запущена. На случай, если это может помешать установке, я попытался удалить с помощью installutil, но снова получил то же сообщение об ошибке.

Я видел много других вопросов, связанных с этой ошибкой, но большинство из них либо не имеют ответа, либо очень специфический ответ, связанный с их уникальной ситуацией. У кого-нибудь это случилось, и как вы это исправили? Любые идеи приветствуются.

Update:

я успешно удалил службу, используя «СБН удалить» команду через командную строку, но я все еще получаю ту же ошибку с InstallUtil при попытке переустановить.

Update 2:

Просто ради попробовать что-то, я удалил папку бен из проекта, вновь решение, и сделал чистую и строить. Он по-прежнему не будет устанавливать, но теперь у меня есть другое сообщение:

This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.

Вопрос:

Что бы вызвать там быть несоответствие времени работы? Насколько я знаю, я использовал .NET Framework 4.5 и не отклонялся. Есть ли ценность, которую я должен искать/изменять, чтобы исправить это?

Update 3:

Вот что я пытался до сих пор:

Один ответ предложил версию InstallUtil быть использованы вопросы. Я запускал v2.0.50727, но есть и v4.0.30319, которые я не думал пробовать. Запуск это привело:

An attempt was made to load a program with an incorrect format...

Я готов работать на эту ошибку вместо того, чтобы, если было бы решить эту проблему. Тем не менее, я вынужден думать, что это не проблема, так как я успешно запускал v2.0.etc незадолго до появления первой ошибки.

Внутри App.config есть строка «Поддерживаемая версия Runtime = v4.0». Я переключил это на 4.5, но это не имело никакого эффекта.

Я попытался переключения целевой базы (в свойствах проекта) до 4.0, но это приводит к ошибке с:

Some NuGet packages were installed using a target framework different from the current target framework, etc...

Это имел в виду EntityFramework, и я предпочел бы не начать баловаться с NuGet снова, если это единственный способ (последний раз это был кошмар).

Я попытался установить службу на целевом сервере (машина, в которую в конечном итоге будет развернута), и получит ту же ошибку. Это заставляет меня думать, что это проблема с проектом/решением, а не с ПК.

+0

32/64-битные отличия? – Lloyd

+0

@Lloyd: Это 64-разрядная программа на 64-битной системе. Кроме того, это тот же самый механизм, над которым он работал. –

+0

Почему вы запускаете файл installutil.exe при запуске службы? –

ответ

0

Похоже, что проблема загрузки сборки. Используйте служебную программу Fuslogvw.exe. Запустите его из командной строки Visual Studio. Нажмите кнопку «Настройки» и нажмите переключатель «Логарифмировать сбои на диске». Вернитесь к VS и запустите программу и дождитесь появления исключения. Вернитесь к Fuslogvw, нажмите кнопку «Обновить» и дважды щелкните добавленную запись. Он покажет вам файл, который он нашел.

. Еще одна возможность заключается в попытке загрузить сборку .NET 4 с EXE, которая запросила версию CLR версии 2. Для этого требуется файл app.exe.config, который заставляет использовать CLR 4.

+0

Хорошо, теперь я пытаюсь с помощью fuslogvw.exe, но я не показываю никаких файлов, когда я дважды щелкаю. Я не знаю, имеет ли это значение, но я не могу запустить программу из visual studio, так как это служба Windows. Использование fuslogvw с installutil не дает результатов. –

+0

Вы должны запустить fuslogvw.exe с правами администратора. Оставьте его открытым при установке служб с помощью installutil.exe. После этого нажмите кнопку «Обновить» в файле fuslogvw.exe, чтобы загрузить информацию. Если вы хотите просмотреть полный отчет, нажмите «Просмотреть журнал». Надеюсь это поможет. – RajN

+0

Я попробовал еще раз, но теперь он не показывает никаких приложений при нажатии кнопки обновления. –

Смежные вопросы