为什么我不能安装我的服务(运行时比加载的运行时更新)?

时间:2010-11-18 15:41:04

标签: c# .net windows-services failed-installation

所以我在C#中构建了一个服务,我正在尝试使用以下命令来安装它:

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版。

有没有人有这个问题的经验?

11 个答案:

答案 0 :(得分:41)

您使用的是错误的installutil.exe如果您的应用程序是针对.Net 4.0构建的。使用4.0文件夹中的installutil.exe。

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

答案 1 :(得分:25)

没有人接近得到这个!

这就是我必须做的事情:

  1. 在Visual Studio中右键单击服务项目,转到“属性”
  2. 将“启动对象”设置为服务名称(已将其设置为值“(未设置)”)。
  3. 保存。
  4. 构建
  5. 尝试重新安装。
  6. 有效!好极了!我们都可以回家了!
  7. 链接到帮助的code project article

答案 2 :(得分:15)

对于那些没有发现这可以解决问题的人,您需要查看.vdproj文件的启动条件并将.NET框架更改为4:http://www.alexjamesbrown.com/uncategorized/deploying-net-4-project-error-1001-system-badimageformatexception/

答案 3 :(得分:5)

如果在x64机器上编译,请务必进入Configuration Mgr并将构建更改为x64。当然,您需要检查以确保您使用的是正确版本的InstallUtil.exe。 g'luck。

答案 4 :(得分:5)

对我来说,我右键单击我试图安装的exe并点击了#34; Unblock"

答案 5 :(得分:0)

我相信你在问题中提供答案:

“此程序集由比当前加载的运行时更新的运行时构建,无法加载..”

所以你可能用较新的函数(在较新的框架中)编译了运行时,但是你注册它的计算机运行的版本较低。

EG。为.NET 3.5编译,但之后在.NET 2.0上安装服务是没有意义的。

由于您可以在目标计算机上安装服务,我猜您已经是管理员了。所以只需在该服务机器上升级.NET框架。

答案 6 :(得分:0)

您是否尝试在包含Windows服务的目录中的命令提示符窗口中输入MyService.exe /install?这在过去对我有用。您也可以使用MyService.exe /uninstall卸载Windows服务。

答案 7 :(得分:0)

我遇到了同样的问题。最初,我的项目在我的项目的调试文件夹中的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

答案 8 :(得分:0)

如果您尝试了以上所有操作并仍然看到相同的错误,请仔细检查您是否有32位应用程序或任何32位DLL,并且您的服务器是64位服务器。

答案 9 :(得分:0)

遇到同样的问题,Windows Server 2019上的上述帮助无济于事

尝试运行兼容性测试,之后注册突然生效: enter image description here

答案 10 :(得分:0)

为此浪费了一个小时,我要做的就是在服务路径中添加引号。

步骤1)cd C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319

在.exe路径的目录中添加引号,如图所示

步骤2)InstallUtil.exe“ E:\ MyNewService \ MyNewService \ bin \ Debug \ MyNewService.exe”

ref:https://www.codeproject.com/Answers/5143174/Installing-windows-service-error-installutil-exe-i#answer5