2012-07-31 7 views
7

समस्या यह है कि मैंने नई कक्षा को जोड़ने के बाद त्रुटि उत्पन्न की जब मैंने समाधान बनाया। क्या गलत हो सकता है?मेरी परियोजना में एक नई कक्षा को जोड़ा गया और त्रुटि कहें प्रोग्राम। मेन() में एक और प्रविष्टि क्यों है?

फॉर्म 1 में मेरे पास अभी तक कोई कोड नहीं है।

बस नया वर्ग कहा:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using OpenHardwareMonitor.Hardware; 

namespace OpenHardwareMonitorReport 
{ 

    class Program 
    { 

     static void Main(string[] args) 
     { 
      Computer computer = new Computer(); 
      computer.Open(); 

      var temps = new List<decimal>(); 
      foreach (var hardware in computer.Hardware) 
      { 
       if (hardware.HardwareType != HardwareType.CPU) 
        continue; 
       hardware.Update(); 
       foreach (var sensor in hardware.Sensors) 
       { 
        if (sensor.SensorType != SensorType.Temperature) 
        { 
         if (sensor.Value != null) 
          temps.Add((decimal)sensor.Value); 
        } 
       } 
      } 

      foreach (decimal temp in temps) 
      { 
       Console.WriteLine(temp); 
      } 
      Console.ReadLine(); 
     } 
    } 
} 

तब मैं Program.cs और त्रुटि देखते मुख्य पर()

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Windows.Forms; 

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

Error 2 Program 'D:\C-Sharp\NvidiaTemp\NvidiaTemp\NvidiaTemp\obj\x86\Debug\NvidiaTemp.exe' has more than one entry point defined: 'NvidiaTemp.Program.Main()'. Compile with /main to specify the type that contains the entry point. D:\C-Sharp\NvidiaTemp\NvidiaTemp\NvidiaTemp\Program.cs 14 21 NvidiaTemp 
+1

आपके पास अब दो 'मुख्य' हैं। –

+0

धन्यवाद निश्चित टीएनएक्स। – user1544479

उत्तर

10

एक सी # कार्यक्रम केवल एक Program.Main हो सकता है()। जब प्रोग्राम शुरू होता है तो मुख्य तरीका पहला तरीका होता है, इसलिए संकलक को यह जानने की आवश्यकता होती है कि कौन सा असली है, और यदि आपके पास दो नहीं हैं तो यह नहीं हो सकता है।

ऐसा लगता है कि आप विंडोज़ एप्लिकेशन बना रहे हैं। आपको या तो मौजूदा मुख्य में कोड जोड़ना चाहिए, या इसे अपने मुख्य रूप से ट्रिगर किए गए ईवेंट हैंडलर में जोड़ना चाहिए।

5

एक नेट कार्यक्रम केवल एक स्थिर Main विधि होनी चाहिए।

आपके पास दो हैं, और संकलक को पता नहीं है कि किस का उपयोग करना है।

चिपकाया एक का नाम बदलें, जब तक आप यह चाहते हैं (जो मामले में, अन्य का नाम बदलें) आवेदन करने के लिए प्रवेश बिंदु हो सकता है, या आवेदन /main स्विच को निर्दिष्ट का उपयोग करते हुए गुजर संकलित करने के लिए जो Main तरीकों में से उपयोग करने के लिए।

और अधिक विस्तार के लिए MSDN पर Main() and Command-Line Arguments (C# Programming Guide) देखें:

मुख्य विधि एक सी # कंसोल अनुप्रयोग या खिड़कियों आवेदन के प्रवेश बिंदु है। (पुस्तकालयों और सेवाओं को मुख्य विधि को प्रवेश बिंदु के रूप में आवश्यकता नहीं होती है।)। जब एप्लिकेशन शुरू होता है, तो मुख्य विधि पहली विधि है जिसे बुलाया जाता है।

सी # कार्यक्रम में केवल एक प्रविष्टि बिंदु हो सकता है। यदि आपके पास एक से अधिक कक्षाएं हैं जिनमें मुख्य विधि है, तो आपको प्रविष्टि बिंदु के रूप में उपयोग करने के लिए कौन सी मुख्य विधि निर्दिष्ट करने के लिए अपने प्रोग्राम को/मुख्य संकलक विकल्प के साथ संकलित करना होगा। अधिक जानकारी के लिए, देखें/मुख्य (सी # कंपाइलर विकल्प)।

(जोर मेरा)

1

आपके पास दो मुख्य विधियां हैं, यही कारण है कि आपको यह त्रुटि मिल रही है।

MSDN - Main Method

से वहाँ केवल एक सी # कार्यक्रम में एक प्रवेश बिंदु हो सकता है। यदि आपके पास अधिक है जिसमें एक मुख्य विधि है, तो आपको अपने प्रोग्राम को/मुख्य संकलक विकल्प के साथ संकलित करना होगा ताकि यह निर्दिष्ट किया जा सके कि कौन सी मुख्य विधि प्रविष्टि बिंदु के रूप में उपयोग करने के लिए है।

9

अन्य ने इंगित किया है कि आपके पास दो स्थिर शून्य मुख्य विधियां हैं।इसके लिए दो आसान फिक्स हैं, एक स्पष्ट और एक जिसे अभी तक विशेष रूप से उल्लेख नहीं किया गया है:

  1. किसी अन्य चीज़ का नाम बदलें उदा। Main1, NotMain, आदि
  2. @ हाबीब द्वारा उल्लिखित/मुख्य कंपाइलर विकल्प सेट करने के लिए, बस समाधान एक्सप्लोरर में प्रोजेक्ट नोड पर राइट क्लिक करें, गुण चुनें, और अनुप्रयोग अनुभाग में ड्रॉपडाउन में "स्टार्टअप ऑब्जेक्ट" का चयन करें।

समाधान 2 के साथ, आप संकलक के बिना विभिन्न कक्षाओं में Main(string[] args) हस्ताक्षर समान हो सकते हैं।

+3

आखिरकार किसी ने विजुअल स्टूडियो (... जो कमांड लाइन पर अपनी सी # परियोजनाओं को गंभीरता से संकलित कर रहा है, का उपयोग करके '/ main' को समायोजित करने का तरीका बताया है?) – mmcrae

1

यदि आपने त्रुटि तय की है और विजुअल स्टूडियो अभी भी आपको त्रुटि संदेश देता है, तो आउटपुट फ़ोल्डरों को निकालने के लायक है (डिफ़ॉल्ट रूप से "बिन" और "ओबीजे") और फिर परियोजना को पुनर्निर्माण करें। मेरे मामले में बस "पुनर्निर्माण" पर क्लिक करने से मदद नहीं मिली।

संबंधित मुद्दे