26

そこで、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..

同じアプローチは、別のアセンブリをインストールする場合にも問題なく機能します。失敗したのは.NET4.0用に書かれていて、動作するのは3.5にあるからかもしれません。

誰かがこの問題の経験がありますか?

4

11 に答える 11

44

アプリケーションが.Net4.0に対して構築されている場合は、間違ったinstallutil.exeを使用しています。4.0フォルダのinstallutil.exeを使用します。

x86の場合:

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

x64の場合:

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

于 2010-11-18T16:25:22.673 に答える
27

誰もこれを手に入れることに近づいていませんでした!

これが私がしなければならなかったことです:

  1. Visual Studioでサービスプロジェクトを右クリックし、[プロパティ]に移動します
  2. 「スタートアップオブジェクト」をサービスの名前に設定します(値「(未設定)」に設定されていました)。
  3. 保存する。
  4. 建てる
  5. もう一度インストールしてみてください。
  6. できます!わーい!私たちは皆家に帰ることができます!

役に立ったコードプロジェクトの記事へのリンク:

于 2010-11-18T16:36:11.050 に答える
15

これで問題が解決することがわからない場合は、.vdprojファイルの起動条件を調べて、.NETフレームワークを4に変更する必要があります。http://www.alexjamesbrown.com/uncategorized/deploying- net-4-project-error-1001-system-badimageformatexception /

于 2011-07-25T13:24:32.710 に答える
6

私の場合、インストールしようとしているexeを右クリックして、[ブロック解除]をクリックしました。

于 2016-09-21T15:03:05.267 に答える
5

x64マシンでコンパイルする場合は、必ずConfiguration Mgrに移動し、ビルドをx64に変更してください。もちろん、正しいバージョンのInstallUtil.exeを使用していることを確認する必要があります。運がいい。

于 2011-11-18T02:55:37.640 に答える
1

同じ問題があり、WindowsServer2019では上記の何も役に立ちませんでした

互換性テストを実行しようとしましたが、その後、登録が突然機能しました。 ここに画像の説明を入力してください

于 2020-03-19T09:54:22.283 に答える
0

私はあなたがあなたの質問に答えを提供すると信じています:

「このアセンブリは、現在ロードされているランタイムよりも新しいランタイムによってビルドされているため、ロードできません。」

したがって、ランタイムを新しい関数(新しいフレームワークにある)でコンパイルしたかもしれませんが、それを登録しているコンピューターはより低いバージョンを実行しています。

例えば。.NET 3.5用にコンパイルしますが、後で.NET2.0にサービスをインストールしても意味がありません。

移行先のマシンにサービスをインストールできるので、あなたはすでに管理者だと思います。したがって、そのサービスマシンの.NETFrameworkをアップグレードするだけです。

于 2010-11-18T15:52:16.947 に答える
0

MyService.exe /installWindowsサービスを含むディレクトリのコマンドプロンプトウィンドウに入力してみましたか?それは過去に私のために働いた。を使用してWindowsサービスをアンインストールすることもできますMyService.exe /uninstall

于 2010-11-18T16:22:39.613 に答える
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
于 2015-09-01T21:06:11.543 に答える
0

上記のすべてを試しても同じエラーが表示される場合は、32ビットアプリケーションまたは32ビットDLLがあり、サーバーが64ビットサーバーであるかどうかを再確認してください。

于 2017-07-11T19:22:03.403 に答える
0

これに1時間も無駄になり、私がしなければならなかったのは、サービスパスの見積もりを追加することだけでした。

手順1)cd C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319

図のように、.exeパスのディレクトリを引用符で囲んで追加します

手順2)InstallUtil.exe "E:\ MyNewService \ MyNewService \ bin \ Debug \ MyNewService.exe"

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

于 2020-07-16T10:05:24.400 に答える