【问题标题】:WCF 'sub main' not found未找到 WCF 'sub main'
【发布时间】:2011-05-10 22:56:53
【问题描述】:

我一定是疯了……

在 Windows 服务中托管测试 WCF 后,我正在尝试另一个(练习、练习、练习)。

我创建了一个 WCF 服务库,添加了一个函数。然后创建了一个 Windows 服务,并将我的 WCF 添加到项目中。其余的东西都在这里(http://joefreeman.co.uk/blog/2010/03/creating-a-setup-project-for-a-windows-wcf-service-with-visual-studio/)

现在我在尝试构建解决方案时收到“在 [WCF 应用程序] 中找不到 Sub Mian”错误。

我认为 WCF 项目不需要 Sub Main,因为它们是服务而不是应用程序。我究竟做错了什么?我的上一个项目中没有子主干。有什么想法吗?

【问题讨论】:

    标签: vb.net wcf service host


    【解决方案1】:

    对于正在寻找与我相同答案的其他人......

    在 VB.NET (VS2010) 中创建了一个服务,并且遇到了上面列出的相同错误...

    'Sub Main' was not found in 'SERVICENAME.Service1'.
    

    在 VB.NET 中,VS2010 自动为我创建了一个“Service1.Designer.vb”文件。该文件的内部是:

        Shared Sub Main()
        Dim ServicesToRun() As System.ServiceProcess.ServiceBase
    
        ' More than one NT Service may run within the same process. To add
        ' another service to this process, change the following line to
        ' create a second service object. For example,
        '
        '   ServicesToRun = New System.ServiceProcess.ServiceBase () {New Service1, New MySecondUserService}
        '
        ServicesToRun = New System.ServiceProcess.ServiceBase() {New SERVICENAME}
    
        System.ServiceProcess.ServiceBase.Run(ServicesToRun)
    End Sub
    

    要解决此问题,请在解决方案资源管理器中右键单击您的解决方案名称,转到“应用程序”选项卡,然后在“启动对象”下拉框中选择“子主程序”作为您的启动对象。重新编译。

    诚然,C# 中的文件名和结构会有所不同,但其想法是 Visual Studio 将 Main 过程放在某处,希望它应该已经知道它在哪里。

    【讨论】:

      【解决方案2】:

      WCF 服务本身不需要 Sub Main,但您的 Windows 服务需要。

      与您之前构建的、正在运行的 Windows 服务进行比较。

      编辑:使用 C#,当我使用 Windows 服务模板创建新项目时,我在 Program.cs 文件中获得以下初始代码(static void Main 是您的 Sub Main)。如果您的 Windows 服务中没有此功能,我会非常感到惊讶。

      static class Program
      {
          /// <summary>
          /// The main entry point for the application.
          /// </summary>
          static void Main()
      

      【讨论】:

      • 找不到两者之间的区别。两者都没有 sub main,都具有相同代码的 OnStart 和 OnStop(WCF 名称除外)。让我大吃一惊!
      • 我使用 C#,但是当我使用“新 Windows 服务”模板时,我得到一个 Program.cs 文件。
      • 发生的事情是我试图复制我以前的工作模型,除了我使用常规 WCF 而不是原始模型中的 Web WCF。自我提醒:它们是不同的!修复是简单地复制原始文件,重命名所有内容并编辑配置文件以匹配新目录。不过,谢谢你的帖子!
      【解决方案3】:

      检查您是否不小心将应用程序类型更改为“windows forms app”之类的愚蠢的东西,点击项目的属性并确保它位于“类库”中。

      【讨论】:

        猜你喜欢
        • 2014-07-18
        • 2020-03-04
        • 2022-10-15
        • 1970-01-01
        • 1970-01-01
        • 2011-08-12
        • 1970-01-01
        • 2022-01-22
        • 1970-01-01
        相关资源
        最近更新 更多