代码之家  ›  专栏  ›  技术社区  ›  SuperNES

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

  •  24
  • SuperNES  · 技术社区  · 14 年前

    因此,我在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中。

    有人对这个问题有经验吗?

    9 回复  |  直到 8 年前
        1
  •  42
  •   Hakan Fıstık MuriloKunze    8 年前

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

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

        2
  •  25
  •   Hakan Fıstık MuriloKunze    8 年前

    甚至没有人接近得到这个!

    我要做的是:

    1. 右键单击Visual Studio中的服务项目,转到“属性”
    2. 将“Startup object”设置为服务的名称(它已设置为值(未设置)”。
    3. 保存。
    4. 建造
    5. 请尝试重新安装。
    6. 它起作用了!耶!我们都可以回家了!

    链接到 code project article 这有助于:

        3
  •  15
  •   Stu    13 年前

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

        4
  •  5
  •   oj_n    13 年前

    如果在x64计算机上编译,请确保转到配置管理器并将生成更改为x64。当然,您需要检查以确保使用的InstallUtil.exe版本正确。祝你好运。

        5
  •  5
  •   user3447136    8 年前

    对我来说,我只是右键单击了要安装的exe,然后单击了“取消阻止”

        6
  •  0
  •   BerggreenDK    14 年前

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

    “此程序集是由比当前加载的运行时新的运行时生成的,无法加载..”

    因此,您可能已经用更新的函数(在更新的框架中)编译了运行时,但是您正在注册它的计算机运行的是较低版本。

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

    既然你能在目标机器上安装服务,我想你已经是管理员了。所以只要升级服务机器上的.NET framework就可以了。

        7
  •  0
  •   Bernard    14 年前

    你试过简单地打字吗 MyService.exe /install 在包含Windows服务的目录中的命令提示符窗口中?这在过去对我很有用。您还可以使用 MyService.exe /uninstall .

        8
  •  0
  •   Alejandro del Río Kristifor    9 年前

    我也有同样的问题。最初,我的项目位于我的项目的调试文件夹中的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
  •  0
  •   JIANG    7 年前

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