1

我刚刚从另一家公司接手了一堆 C# 代码,但在第一次构建工作时遇到了很大的麻烦。问题似乎是一个名为“Topshelf”的框架使用的一些 Lambda 语法。如果这是基本知识,我很抱歉,但我对 Microsoft 编程相当陌生,不知道如何解决这个问题。

问题归结为一个静态类,处理应用程序中的所有服务。

这是关于如何配置的 Topshelf 文档: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>'

我 100% 确定,这是 Visual Studio 方面的某种解释问题,因为代码是实时 atm。我只是无法在VS中构建它。

你们有谁知道我错过了什么,或者做错了什么?记住; 该代码正在工作并且可以使用atm。

先感谢您。

4

1 回答 1

1

看起来这段代码是在旧版本的 Topshelf(1.x,也许是 2.x)上构建的。使用这些二进制文件可能会解决您的问题。Topshelf 3.x 版本不支持多个托管服务。

于 2013-09-24T12:51:04.963 回答