2012-03-07 15 views
43

Tôi bắt đầu tổ chức mã của mình thành ngày thành tệp .cs và để cho phép các phương thức hoạt động với giao diện người dùng tiếp tục làm như vậy, tôi sẽ tạo mã .cs dưới cùng một không gian tên và tên lớp công khai, do đó các phương thức có thể tương thích với nhau.Không chứa phương thức 'chính' tĩnh phù hợp với điểm nhập

tiêu đề của tôi trông như thế này trong bốn tác phẩm, bao gồm cả tập tin cốt lõi chính của tôi mà các cuộc gọi:

public shell() 
{ 
InitializeComponent(); 
} 

khu vực header của cs file làm việc với giao diện người dùng (và dường như gây ra cuộc xung đột mới này):

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 
    { 

Bây giờ khi tôi cố gắng để debug/xem trước ứng dụng của tôi (BTW đây là một ứng dụng Windows trong Visual Studio 2010 Express) tôi nhận được thông báo lỗi này:

Does not contain a static 'main' method suitable for an entry point

Tôi đã xem các thuộc tính ứng dụng trong Ứng dụng-> Đối tượng khởi động, nhưng nó cung cấp cho tôi không có tùy chọn. Làm thế nào tôi có thể thông báo cho ứng dụng để bắt đầu tại tệp .cs có InitializeComponent() của tôi; chỉ huy?

  • Tôi đã xem xét cho đến nay mà không có giải pháp.
  • Thuộc tính trên mỗi tệp .cs được đặt thành 'Biên dịch'.
  • Tôi không thấy tệp App.xaml trong trình khám phá Giải pháp của mình nhưng tôi thấy tệp app.config.

Tôi vẫn còn rất mới và đây là lần đầu tiên tôi thử một phương pháp tổ chức với mã C#.

+9

bạn có một phương pháp chính? –

+0

Thành thật mà nói tôi không thấy một phương pháp được gọi là Main ở bất kỳ đâu trong mã của tôi. Tôi đã làm việc cho dự án này trong một vài tháng nay. – atwellpub

+1

Bạn cần một phương thức tĩnh gọi là 'main', với chữ ký chính xác. Đó là cách trình biên dịch biết cách bắt đầu chương trình của bạn. –

Trả lời

2

Trông giống như một dự án Windows Forms đang cố gắng sử dụng một hình thức khởi động nhưng vì lý do nào thuộc tính dự án được thiết lập để khởi động là chính.

Nếu bạn đã bật khung ứng dụng, bạn có thể không thấy được Main đang hoạt động (đây là cấu hình không hợp lệ).

+0

Tôi muốn được quan tâm nhiều hơn một chút về cài đặt Khung ứng dụng và bất kỳ thứ gì có thể yêu cầu phần mềm tìm kiếm Main() khi phương thức Main dường như không tồn tại ở bất kỳ đâu. – atwellpub

+0

Tôi tin rằng cài đặt Khung ứng dụng chỉ áp dụng cho VB.NET. C# Các ứng dụng biểu mẫu luôn có "chính" làm điểm vào. –

72

Tôi cũng đang xem vấn đề này và trong trường hợp của tôi giải pháp quá dễ dàng. Tôi đã thêm một dự án trống mới vào giải pháp. Dự án mới được thêm sẽ tự động được đặt làm ứng dụng bảng điều khiển. Nhưng kể từ khi dự án được thêm vào là một dự án "trống rỗng", không có Program.cs nào tồn tại trong dự án mới đó. (Đúng như dự đoán)

Tất cả tôi cần phải làm là thay đổi kiểu đầu ra của các thuộc tính dự án vào thư viện lớp

+0

Một chút overkill của một giải pháp, tôi nghĩ. Sẽ dễ dàng hơn khi làm theo giải pháp của @ eyossi. – TimWagaman

+0

Tuyệt vời, đã giúp tôi rất nhiều, cảm ơn. – casaout

+0

Nhưng bạn có muốn ứng dụng bảng điều khiển hoặc thư viện lớp không? Không chỉ thay đổi loại ứng dụng để sửa lỗi; biết những gì lỗi đang nói với bạn. Các ứng dụng Console cần một điểm vào ('static void main()') để xác định nơi để bắt đầu thực thi mã; các thư viện lớp không - chúng được gọi bởi các thư viện khác đã thực hiện. – KyleMit

13

Hãy thử thêm phương pháp này để một lớp học và xem nếu bạn vẫn nhận được lỗi:

[STAThread] 
static void Main() 
{ 
} 
4

hey tôi gặp lỗi tương tự và giải pháp cho lỗi này chỉ viết Capital M thay vì nhỏ m .. ví dụ: - static void Main() Tôi hy vọng nó sẽ giúp ..

10

Nếu bạn không có tệp có tên Program.cs, chỉ cần thêm Lớp và tên mới nó Program.cs.

Sau đó dán mã này:

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()); 
     } 
    } 

} 
-2

Simple Solution.

1.BUILD -> SẠCH DỰ ÁN-NAME (nó sẽ xóa Previous xây dựng của bạn chưa hoàn thành "nó là tương tự để làm mới")

2.BUILD -> BUILD DỰ ÁN-NAME.

thì bạn có thể chỉ cần bắt đầu Tập lệnh của mình nó sẽ hoạt động. Vui lòng tìm tệp đính kèm !!

42

Thay đổi Loại kết xuất trong Dự án> Thuộc tính thành loại của “Thư viện lớp”. Theo mặc định, cài đặt này có thể đã được đặt thành “Ứng dụng giao diện điều khiển”.

+0

Đây chính xác là những gì tôi đã làm, hoạt động hoàn hảo. Nếu bạn đã thêm dự án 'Empty', nó sẽ mặc định là Console. – HowlinWulf

+0

Tôi đã sửa lỗi đơn giản này và nó đã làm việc cho tôi. – jjones150

4

Nếu bạn có phương pháp chính nhưng vẫn gặp phải lỗi này, hãy đảm bảo rằng tệp chứa phương pháp chính có "Hành động xây dựng" được đặt thành "Biên dịch" và "Sao chép vào thư mục ouput" được đặt thành "Không sao chép" .

+0

Cảm ơn bạn! Có lẽ trong một vài giờ nữa, tôi nhận ra rằng tôi không thể tạo ra một lỗi cú pháp và do đó nhìn ở đó .. –

0

Tôi cũng đã gặp sự cố này. Sau đó, tôi nhận ra rằng tôi đã chọn Ứng dụng Console (Gói) thay vì Ứng dụng Console.

1
  1. Chọn App.xaml và hiển thị thuộc tính của nó. Đặt Xây dựng Hành động đến ApplicationDefinition.
  2. App.xaml và tệp * .cs tương ứng của nó phải được đặt vào thư mục gốc của tệp * .csproj, i. e. không vào thư mục "Nguồn".
0

Tôi đang sử dụng Visual Studio và cũng gặp sự cố này. Nó đã cho tôi một thời gian, nhưng trong chương trình của tôi nó đã được gây ra bởi vì tôi vô tình xóa một lớp có tên là "Chương trình" được tạo ra tự động.

0

Đối với độc giả trong tương lai người phải đối mặt với cùng một vấn đề với Windows Forms Application, một giải pháp là thêm những dòng này để chính/khởi động dưới hình thức lớp học của bạn:

[STAThread] 
    static void Main() 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     Application.Run(new MyMainForm()); 
    } 

Sau đó đi đến tài sản dự án> Ứng dụng> Startup Object thả xuống , nên xem namespace.MyMainForm, chọn nó, làm sạch và xây dựng giải pháp. Và nó sẽ hoạt động.

0

Kiểm tra để xem nếu dự án được thiết lập là "Dự án Startup"

Nhấp chuột phải vào dự án và chọn "Set as dự án Startup" từ menu.

0

Khi bạn muốn cho phép paramaters được xác định từ lệnh thì phải trông như thế này:

[STAThread] 
static void Main(params string[] paramaters) 
{ 

bạn không thể chỉ định nhiều hơn một paramater, nếu không này cũng sẽ gây ra lỗi báo cáo trên.

0

Đối với một số người khác đến đây:

Trong trường hợp của tôi, tôi đã sao chép một csproj từ một dự án mẫu trong đó bao gồm sai mà không bao gồm các tập tin Program.cs. Mà là để loại bỏ EnableDefaultCompileItems của chúng tôi bao gồm Program.cs trong biên dịch rõ ràng

Các vấn đề liên quan