错误“找不到为主方法指定的xxxx.Program”从MS示例创建Windows服务

时间:2014-08-28 18:36:16

标签: .net windows c#-4.0 service windows-services

我按照本指南创建了一个Windows服务> http://msdn.microsoft.com/en-us/library/zt39148a(v=vs.110).aspx

然而,当我尝试在自动生成的页面上构建它时,名为" Program.cs" 那里面有这段代码

namespace BetfairBOTV2Service
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        static void Main()
        {
            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[] 
            { 
                new BrainiacVersion2() // not green though!!!!!
            };
            ServiceBase.Run(ServicesToRun);
        }
    }
}

我收到此错误&#34;找不到BrainiacV2.Program&#34;为主方法指定

我做了教程告诉我的所有事情。

我有一个App.Config,一个Program.cs(上面的代码),一个BrainiacV2.cs,它包含我所有的服务代码,并且像这样开始

namespace BetfairBOTV2Service
{
    public partial class BrainiacV2 : ServiceBase
    {
        public BrainiacV2()
        {
            InitializeComponent();

我的ProjectInstaller.cs上有两个安装程序对象 (名称)serviceInstaller 显示名称:我的新BetfairBotV2 服务名称:BrainiacVersion2

就是这样。

这是我唯一的错误

该解决方案名为BrainiacV2

我尝试将Program.cs中的代码更改为

新的BrainiacV2()

将其变为绿色,但之后我才得到

找不到为main方法指定的BrainiacV2.Program。

我做错了什么或需要改变什么?

非常感谢任何帮助 - 谢谢!

Win 7,64 bit,.NET 4.5,C#

3 个答案:

答案 0 :(得分:16)

重命名项目和默认命名空间后。我也不得不改变这个:

enter image description here

因此,在您创建项目的情况下,默认Main位于BrainiacV2.Program中,但您确实希望在BetfairBOTV2Service.Program中运行Main

答案 1 :(得分:2)

我不得不改变我的命名空间和类。这与错误无关(不是一个非常有用的错误!)

namespace BrainiacV2
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        static void Main()
        {
            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[] 
            { 
                new Brainiac()
            };
            ServiceBase.Run(ServicesToRun);
        }
    }
}

一旦我做完了,一切都奏效了!

看起来像名称空间问题。

如果错误消息更有帮助,那会很好,因为涉及很多猜测工作!

感谢您的帮助。

答案 2 :(得分:0)

您似乎正在指定错误的类名。请参阅以下评论。

namespace BetfairBOTV2Service
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        static void Main()
        {
            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[] 
            { 
                new BrainiacVersion2(); // <-- this is what you have
                new BrainiacV2();       // <-- this is what you need
            };
            ServiceBase.Run(ServicesToRun);
        }
    }
}

FWIW,我有几个教程 - herehere - 向您展示如何创建服务并让它自行安装。

HTH