サービス (ロードされたランタイムよりも新しいランタイム) をインストールできないのはなぜですか?

StackOverflow https://stackoverflow.com/questions/4216606

質問

そこで、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 用に書かれており、動作するものは .NET 3.5 であることが原因のような気がします。

この問題について経験のある人はいますか?

役に立ちましたか?

解決 2

誰もこれを手に入れるところまで来ませんでした!

私がしなければならなかったのは次のとおりです。

  1. Visual Studio でサービス プロジェクトを右クリックし、[プロパティ] に移動します。
  2. 「スタートアップ オブジェクト」をサービスの名前に設定します (値「(Not Set)」に設定されていました)。
  3. 保存。
  4. 建てる
  5. 再度インストールしてみてください。
  6. それは動作します!わーい!みんなで家に帰れるよ!

へのリンク コードプロジェクトの記事 それは役に立ちました:

他のヒント

アプリケーションが.NET 4.0に対して構築されている場合は、

あなたは間違っinstallutil.exeを使用しています。 4.0フォルダ内のinstallutil.exeを使用します。

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

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

は、x64のマシン上でコンパイルする場合、コンフィギュレーションモンシニョールに入るとx64にビルドを変更してください。もちろん、あなたはあなたがInstallUtil.exeの正しいバージョンを使用していることを確認したいと思います。 g'luckます。

私にとっては、私はちょうど右の私がインストールしようとしていたexeファイルをクリックし、

「ブロックを解除する」をクリック

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

「このアセンブリ、現在ロードされ、実行時よりも新しくしてロードすることはできませんランタイムによって構築されています..」

あなたは(新しいフレームワークである)の新しい機能で、実行時にコンパイルされている場合がありますが、あなたが上でそれをregistratingているコンピュータが低いバージョンを実行しているので。

例:。 .NET 3.5用にコンパイルが、.NET 2.0 wouldntのメイク感覚で、その後のサービスをインストールします。

あなたが宛先マシン上のサービスをインストールすることができますので、

は、私はあなたがすでに管理されていると思います。だから、そのサービス・マシン上の.NET Frameworkをアップグレードします。

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

私も同じ問題を抱えていました。当初、私のプロジェクトは、プロジェクトのデバッグフォルダー内の 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

あなたはすべての上に、あなたは、32ビットアプリケーションまたは32ビットDLLを持っているし、あなたのサーバが64ビットサーバーであれば、まだ同じエラー、ダブルチェックを参照しようとした場合。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top