我开始将我的代码组织成seperarate .cs文件,并且为了允许与UI一起使用的方法继续这样做,我将在相同的命名空间和公共部分类名下创建.cs代码这些方法可以互操作。
我的标题在四个文件中看起来像这样,包括调用的主要核心文件:
public shell()
{
InitializeComponent();
}
与UI一起使用的.cs文件的标头区域(似乎导致此新冲突):
using System;
using System.Windows.Forms;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
using System.Data.SqlServerCe;
using System.Diagnostics;
using System.Threading;
using System.Collections.Specialized;
using System.Net;
using System.Runtime.InteropServices;
using watin = WatiN.Core;
using WatiN.Core.Native.InternetExplorer;
using System.Web;
namespace WindowsFormsApplication1
{
public partial class shell : Form
{
现在,当我尝试调试/预览我的应用程序时(BTW这是Visual Studio 2010 Express中的Windows应用程序),我收到此错误消息:
不包含适用于入口点的静态“主”方法
我查看了Application-> Startup对象中的应用程序属性,但它没有提供任何选项。如何通知应用程序从具有InitializeComponent()的.cs文件开始;命令?
我还是很新,这是我第一次尝试使用c#代码组织方法。
答案 0 :(得分:100)
我也在考虑这个问题,在我看来,解决方案太容易了。我在解决方案中添加了一个新的空项目。新添加的项目将自动设置为控制台应用程序。但由于添加的项目是一个“空”项目,因此该新项目中不存在任何Program.cs。 (正如预期的那样)
我需要做的就是将项目属性的输出类型更改为类库
答案 1 :(得分:58)
更改项目下的输出类型>属于“类库”的属性。默认情况下,此设置可能已设置为“控制台应用程序”。
答案 2 :(得分:14)
尝试将此方法添加到类中,看看是否仍然出现错误:
[STAThread]
static void Main()
{
}
答案 3 :(得分:11)
如果您没有名为Program.cs
的文件,只需添加一个新类并将其命名为Program.cs
。
然后粘贴此代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Sales {
static class Program {
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main() {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
答案 4 :(得分:4)
嘿,我得到了同样的错误,这个错误的解决方案只是写出Capital M而不是小m ..例如: - static void Main() 我希望它有所帮助..
答案 5 :(得分:4)
如果您确实有Main方法但仍然出现此错误,请确保包含Main方法的文件具有&#34; Build action&#34;设置为&#34;编译&#34;和&#34;复制到输出目录&#34;设置为&#34;不要复制&#34;。
答案 6 :(得分:3)
在VS 2017中出现此问题的原因是:
静态 异步任务 Main(字符串[]参数)
(功能'async main'在C#7.0中不可用。请使用语言版本7.1或更高版本)
添加
<LangVersion>latest</LangVersion>
对app.csproj有所帮助。
答案 7 :(得分:3)
答案 8 :(得分:2)
看起来像是试图使用启动表单的Windows窗体项目,但出于某种原因,项目属性设置为启动为Main。
如果您启用了应用程序框架,则可能无法看到Main处于活动状态(这是无效配置)。
答案 9 :(得分:1)
如果要允许从命令中指定参数,则它们必须如下所示:
[STAThread]
static void Main(params string[] paramaters)
{
您不能指定多个参数,否则这也会导致上面报告的错误。
答案 10 :(得分:1)
将以上代码放入Program.cs之后,请按照下列步骤操作:
右键单击项目
选择“属性”
将“输出类型”设置为“ Windows应用程序”
启动对象:namepace.Program
答案 11 :(得分:1)
<OutputType>Library</OutputType>
欢呼!
答案 12 :(得分:1)
对我来说,该错误实际上是由“功能'async main'在C#7.0中不可用。请使用语言版本7.1或更高版本”引起的。此问题导致错误列表中出现“不包含适用于入口点的静态'main'方法”消息,但“输出”窗口显示“不可用”错误。 为了解决这个问题,我在“高级构建设置”下将语言版本从“ C#最新次要版本(默认)”更改为“ C#最新次要版本(最新)”。
答案 13 :(得分:1)
我遇到了这个错误,并通过此解决方案解决了。
--> Right click on the project
--> and select "Properties"
--> then set "Output Type" to "Class Library".
答案 14 :(得分:1)
如果您使用的是类库项目,请在项目的“应用程序”部分下的属性中将“类库”设置为输出类型。
答案 15 :(得分:1)
对于其他一些人来到这里:
在我的情况下,我从包含<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
的示例项目中复制了.csproj,但没有包含Program.cs文件。修复是删除EnableDefaultCompileItems或在编译中包含Program.cs
答案 16 :(得分:0)
如果您和我一样,那么您可能已经开始使用类库,然后将其切换到控制台应用程序。如果是这样,请更改此...
namespace ClassLibrary1
{
public class Class1
{
}
}
对此...
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
}
}
}
答案 17 :(得分:0)
hellow你的主类被删除了所以添加新的类,名称设置为Main.cs和害虫代码或如果在窗口中的porblem那么相同的问题
using System;
using System.Collections.Generic;
using System.Linq;
using Foundation;
using UIKit;
namespace your_PKG_name.iOS
{
public class Application
{
// This is the main entry point of the application.
static void Main(string[] args)
{
// if you want to use a different Application Delegate class from "AppDelegate"
// you can specify it here.
UIApplication.Main(args, null, "AppDelegate");
}
}
}
答案 18 :(得分:0)
有效条目如下:
public static class ConsoleProgram
{
[STAThread]
static void Main()
{
Console.WriteLine("Got here");
Console.ReadLine();
}
}
在编写Web应用程序时遇到了问题,但是在可怕的加载时间里,我想快速将同一项目转换为控制台应用程序并执行快速的方法测试,而无需加载整个解决方案。
我的入口点位于/App_Code/Main.cs中,我必须执行以下操作:
此后,我可以将输出(如步骤1中所述)设置为“类库”以启动网站,或将“控制台应用程序”设置为进入控制台模式。
为什么我这样做而不是2个单独的项目?
仅仅是因为我引用了Entity Framework和其他特定的引用,这些引用在运行2个单独的项目时造成了问题。
对于更简单的解决方案,我仍然建议2个单独的项目,因为控制台输出主要是测试代码,并且您可能不希望冒险将其投入生产代码中。
答案 19 :(得分:0)
如果确实有一个公共静态主方法,则可能是您在此问题中解释的构建设置:Troubleshooting "program does not contain a static 'Main' method" when it clearly does...?
答案 20 :(得分:0)
检查项目是否设置为&#34;启动项目&#34;
右键单击项目并选择&#34;设置为启动项目&#34;从菜单中。
答案 21 :(得分:0)
萨拉姆,
我同时拥有 Visual Studio 2017
和 Visual Studio 2019
Visual Studio 2019不会显示此错误,但2017会显示。尝试安装Visual Studio 2019。
Visual Studio 2017
Visual Studio 2019
答案 22 :(得分:0)
对于面临Windows Forms Application相同问题的未来读者,一种解决方案是将这些行添加到主/启动表单类中:
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MyMainForm());
}
然后转到项目属性&gt;申请&gt;启动对象下拉列表,应该看到namespace.MyMainForm,选择它,清理并构建解决方案。它应该工作。
答案 23 :(得分:0)
我正在使用Visual Studio并且还遇到了这个问题。它花了我一些时间,但在我的程序中它是由于我不小心删除了一个名为&#34; Program&#34;这是自动生成的。
答案 24 :(得分:0)
我也遇到过这个问题。然后我意识到我选择的是Console Application(Package)而不是Console Application。
答案 25 :(得分:-1)
也许是无意的,但是将我的docker文件移动到解决方案文件夹而不是项目中消除了该错误。当我仍然想独立于docker运行解决方案时,这很有用
答案 26 :(得分:-1)
答案 27 :(得分:-4)
简单解决方案。
1.BUILD - &gt;清洁项目名称 (它将清除您之前未完成的构建“它与刷新类似”)
2.BUILD - &gt; BUILD PROJECT-NAME。
然后你可以简单地启动你的脚本它会起作用。 请找附件!!