1

別の会社から一連の C# コードを引き継いだばかりで、最初のビルドを機能させるのに大きな問題があります。この問題は、「Topshelf」と呼ばれるフレームワークで使用される Lambda 構文にあるようです。これが基本的な知識である場合は申し訳ありませんが、私はマイクロソフトのプログラミングに慣れていないため、この問題を解決する方法がわかりません。

問題は、アプリケーション内のすべてのサービスを処理する単一の静的クラスに要約されます。

これは、設定方法に関するトップシェルフのドキュメントです: http://docs.topshelf-project.com/en/latest/configuration/quickstart.html

そして、これは実際の構成方法のコードです(一部ですが、画像を提供する必要があります):

  public static void Main (string[] args)
            {

                    XmlConfigurator.Configure ();
                    HostFactory.Run (
                    x => 
                    {
                            x.Service<InvoiceGenerator>(
                                s => {
                                    s.SetServiceName("NAME");
                                    s.ConstructUsing(name => new InvoiceGenerator());
                                    s.WhenStarted(ser => ser.Start());
                                    s.WhenStopped(ser => ser.Stop());
                                }
                            );


            }
       }
 }

しかし、このようにすると、Visual Studio はコードのすべての行について文句を言います。エラーには次のものがあります。

Delegate 'System.Func<Tools.Services.InvoiceGenerator>' does not take 1 arguments

Not all code paths return a value in lambda expression of type 'System.Func<Tools.Services.InvoiceGenerator>'

コードはライブ atm であるため、これは Visual Studio 側の何らかの解釈の問題であると 100% 確信しています。私はVSでそれを構築することはできません。

私が見逃している、または間違っていることを知っている人はいますか? 覚えて; コードは機能しており、atm が稼働しています。

前もって感謝します。

4

1 に答える 1

1

このコードは、古いバージョンの Topshelf (1.x、おそらく 2.x) で作成されたようです。これらのバイナリを使用すると、問題が解決する可能性があります。複数のホステッド サービスは、Topshelf の 3.x バージョンではサポートされていません。

于 2013-09-24T12:51:04.963 に答える