.NET 4 Windows服务安装升级错误

我有一个使用VS2008安装和部署项目安装的.NET 3.5 Windows服务。 它有一个自定义安装操作。 这个服务的安装工作很好,直到我最近升级到VS2010 / .NET 4.现在,当我升级到新版本时,我得到安装错误:“Error 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>

谢谢,
史蒂夫


融合日志:

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:WindowsMicrosoft.NETFrameworkv2.0.50727mscorwks.dll
Running under executable  C:Windowssyswow64MsiExec.exe
--- A detailed error log follows.

=== Pre-bind state information ===
LOG: User = NT AUTHORITYSYSTEM
LOG: Where-ref bind. Location = C:Program Files (x86)ServerServerService.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:UsersSteveAppDataLocalTempCFG94A5.tmp
LOG: Using machine configuration file from C:WindowsMicrosoft.NETFrameworkv2.0.50727configmachine.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)ServerServerService.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.**

当我从我的应用程序中删除自定义操作时,升级工作正常,所以我想我已经指出了问题的根源。


我有一个通过COM调用.NET DLL的非托管C ++ EXE。

这里需要提到的是,上面列出的<startup>...块需要添加到foo.exe.config以及app.config (其中foo.exe是您的可执行文件)。 配置文件需要存在于安装目录中。

我得到了完全相同的错误,因为FUSLOGVW显示Windows正在加载.NET 2框架,尽管我正在编译.NET 4.我已经格式化了我的app.config但这还不够。

链接地址: http://www.djcxy.com/p/20353.html

上一篇: .NET 4 Windows service install upgrade error

下一篇: How to reset region center when exited region in background using CoreLocation