Ошибка обновления установки службы Windows .NET 4 - PullRequest
1 голос
/ 11 марта 2011

У меня есть служба Windows .NET 3.5, которая устанавливается с помощью проекта установки и развертывания VS2008. У него есть собственное действие по установке. Установка этого сервиса работала отлично, пока я недавно не обновил до VS2010 / .NET 4. Теперь, когда я обновляюсь до новой версии, я получаю ошибку установки: «Ошибка 1001 ... BadImageFormatException : не удалось загрузить файл или сборку ... Эта сборка создается средой выполнения, более новой, чем загруженная в настоящий момент среда выполнения ... ". Если я удаляю предыдущую версию, а затем устанавливаю новую, все работает нормально ... без ошибок. Установка выполняется на моей машине для разработки, поэтому платформа .NET 4 уже существует.

Я включил ведение журнала Fusion и нашел файл ошибок (см. Ниже). Служба «ServerService.exe» загружается платформой .NET 2.0, но я не уверен, почему это так. Другие файлы в установке загружаются фреймворком 4.0. У кого-нибудь есть какие-либо предложения о том, как это исправить или как я могу исследовать это дальше?

Проект нацелен на среду .NET 4.0, и мой app.config содержит следующие строки:

  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>

Спасибо
Стив


Fusion Log:

Assembly Binder Log Entry  (3/11/2011 @ 2:44:03 PM)

The operation failed.
Bind result: hr = 0x8013101b. No description available.

Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
Running under executable  C:\Windows\syswow64\MsiExec.exe
--- A detailed error log follows.

=== Pre-bind state information ===
LOG: User = NT AUTHORITY\SYSTEM
LOG: Where-ref bind. Location = C:\Program Files (x86)\Server\ServerService.exe
LOG: Appbase = file:///C:/Windows/syswow64/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = NULL
Calling assembly : (Unknown).
===<br>
LOG: This bind starts in LoadFrom load context.
WRN: Native image will not be probed in LoadFrom context. Native image will only be probed in default load context, like with Assembly.Load().
LOG: No application configuration file found.
LOG: Using host configuration file: C:\Users\Steve\AppData\Local\Temp\CFG94A5.tmp
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\machine.config.
LOG: Attempting download of new URL file:///C:/Program Files (x86)/Server/ServerService.exe.
LOG: Assembly download was successful. Attempting setup of file: C:\Program Files (x86)\Server\ServerService.exe
LOG: Entering run-from-source setup phase.
ERR: Error extracting manifest import from file (hr = 0x8013101b).
ERR: Failed to complete setup of assembly (hr = 0x8013101b). Probing terminated.**

Ответы [ 2 ]

0 голосов
/ 02 сентября 2011

У меня неуправляемый C ++ EXE, вызывающий .NET DLL через COM.

Здесь необходимо упомянуть, что перечисленный выше блок <startup>... необходимо добавить к foo.exe.config, а также app.config (где foo.exe - ваш исполняемый файл). Файл конфигурации должен присутствовать в каталоге установки.

Я получаю точно такую ​​же ошибку, потому что FUSLOGVW показал, что Windows загружает .NET 2 framework, хотя я компилировал против .NET 4. Я отформатировал app.config, но этого было недостаточно.

0 голосов
/ 13 марта 2011

Когда я удаляю пользовательские действия из своего приложения, обновление работает очень хорошо, поэтому, я думаю, я точно определил источник проблемы.

...