WindowsにインストールするWCFサービスがあります。
今、Windowsを実行しているサーバーにインストールしたいと思っており、v3.5 .netフレームワークがインストールされています。
サービスがフレームワーク 4 で記述されているため、サービスが実行されないことは論外です。
私の質問は、フレームワーク 3.5 の「installutil」を使用してサービスをインストールできますか?その理由は?
===更新===
内部でwcfを実行しているWindowsサービスがあります。
WindowsにインストールするWCFサービスがあります。
今、Windowsを実行しているサーバーにインストールしたいと思っており、v3.5 .netフレームワークがインストールされています。
サービスがフレームワーク 4 で記述されているため、サービスが実行されないことは論外です。
私の質問は、フレームワーク 3.5 の「installutil」を使用してサービスをインストールできますか?その理由は?
===更新===
内部でwcfを実行しているWindowsサービスがあります。
InstallUtilを使用してWindowsサービスをインストールします。次のMSDNの記事「方法:管理されたWindowsサービスでWCFサービスをホストする」のようなものに従った場合、WCFサービスはWindowsサービス内で開発された可能性があります。
ただし、(Windows)サービスが.NET 4で記述されていて、.net 3.5からinstallutilを実行しようとすると、次のエラーが発生します。
インストールの初期化中に例外が発生しました:System.BadImageFormatException:ファイルまたはアセンブリ'file:/// C:\MyService.exe'またはその依存関係の1つを読み込めませんでした。このアセンブリは、現在ロードされているランタイムよりも新しいランタイムによってビルドされ、ロードできません。
.NET 4(Windows)サービスをインストールするには、.NET 4を使用した後、C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319\installutil.exeで利用できる.NET4installutilを使用する必要があります。インストールされています。
installutil は、wcf サービスではなく Windows サービスをインストールするために使用されます。
サービスのビルドを制御できる場合は、.NET 3.5 フレームワークを対象とするように変更するだけで、インストールできるはずです。
それ以外の場合、サービスが .NET Framework 4.0 を対象として構築されていて、サーバーに .NET 3.5 しかインストールされていない場合、.NET 3.5 で実行するように構成ファイルで明示的に上書きしない限り、サービスは実行されないと思います (お勧めしません)。
余談ですが、Windows サービスのインストーラーを作成するには、InstallUtil を使用する代わりに、 WiX Toolsetを使用することを常にお勧めします。 Windows インストールの承認済み標準には、十分に試行された Windows サービスをインストールするためのサポートが組み込まれており、サービスの停止や開始など、より詳細な制御が可能です。