2008-09-18 10 views
12

मेरे पास .NET 3.5 (लक्ष्य ढांचा) वेब अनुप्रयोग है।उत्पन्न होने वाली .NET संपत्ति "एक शरीर घोषित करनी चाहिए क्योंकि यह सार या बाहरी नहीं है" संकलन त्रुटि

public string LogPath { get; private set; } 
public string ErrorMsg { get; private set; } 

यह इन पंक्तियों के लिए मुझे इस संकलन त्रुटि दे रही है:

"must declare a body because it is not marked abstract or extern." 

कोई भी विचार मैं कुछ कोड है कि इस तरह दिखता है? मेरी समझ यह थी कि संपत्ति की यह शैली .NET 3.0 के रूप में मान्य थी।

धन्यवाद!


समस्या मेरी .sln फ़ाइल में ही हो गई। हालांकि मैं अपने निर्माण के लिए विकल्पों में लक्ष्य संस्करण बदल रहा था, .sln फ़ाइल में, मैं इस पाया:

TargetFramework = "3.0" 

कि बदलना "3.5" करने के लिए इसे हल। धन्यवाद दोस्तों!

+0

कोई भी मौका आप पूरी कक्षा पोस्ट कर सकते हैं? आपके द्वारा पोस्ट किया गया कोड सी # 3.0 में केवल पढ़ने योग्य ऑटो-गुणों के लिए बिल्कुल सही दिखता है। –

+1

संदर्भ के लिए: http://msdn.microsoft.com/en-us/library/bb384054.aspx –

उत्तर

16

वेब पर जोड़ें।कॉन्फ़िगर

<system.codedom> 
    <compilers> 
     <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider,System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4"> 
      <providerOption name="CompilerVersion" value="v3.5" /> 
      <providerOption name="WarnAsError" value="false" /> 
     </compiler> 
    </compilers> 
</system.codedom> 
+0

या शायद एक web.config फ़ाइल बनाएं :) –

+0

धन्यवाद! यह मेरी त्रुटि भी तय की। +1 – David

-7

यह तब तक है जब तक आप अमूर्त सामने या विधियों को लागू करते हैं।

public abstract string LogPath { get; private set; } 
public abstract string ErrorMsg { get; private set; } 

http://forums.asp.net/t/1031651.aspx

+0

वह तरीकों की ऑटो पीढ़ी का उपयोग करने का प्रयास कर रहा है, सी # 3.0 – Guvante

+1

में एक नई सुविधा एमएसडीएन का एक उदाहरण है जो उपयोग नहीं करता है सार: http://msdn.microsoft.com/en-us/library/bb384054.aspx –

+0

एकमात्र समय आपको सार का उपयोग करना है यदि आप लक्ष्यीकरण कर रहे हैं .net 2.0 –

1

आप सही हैं देखें; उस शैली की अनुमति है।

मैं संदर्भित मानक असेंबली में देखता हूं। मुझे यकीन नहीं है कि आपको इसे संकलित करने की आवश्यकता होगी, लेकिन मुझे कुछ हद तक लगता है कि आप csc.exe के .Net v2.0 संस्करण को इंगित कर रहे हैं।

3

वाक्यविन्यास मान्य है। और आप विभिन्न एक्सेस संशोधक सेट कर सकते हैं। आप इंटरफेस पर नहीं हैं? और जिस वर्ग में वे हैं वे अमूर्त नहीं हैं?

इसके अलावा, इससे कोई फ़र्क नहीं पड़ता कि आप जिस फ्रेमवर्क को लक्षित करते हैं, वह एक कंपाइलर सुविधा है। वीएस -2008 आपके लिए संपत्ति डब्ल्यू/बैकिंग स्टोर्स को लागू करेगा।

0

आप इस संपत्ति को कहां परिभाषित करते हैं? सीधे * x फ़ाइल या कोड में के रूप में? (मुझे नहीं लगता कि यह एक कारण हो सकता है, लेकिन यदि बिल्ड-लक्ष्य है .NET 3.5 मैं कुछ और नहीं देख सकता)

4

आपका कोड मान्य है - इसे ठीक काम करना चाहिए। अपनी परियोजना के प्रॉपर्टी पेज पर जाएं और सुनिश्चित करें कि "लक्ष्य फ्रेमवर्क" .NET 3.0 या 3.5 है।

+0

यह क्यों काम करना चाहिए? मैंने VS2008 में .NET 2.0 को लक्षित करने वाले ऑटो-प्रॉपर्टी का उपयोग किया है। असल में, मैंने इसे सुनिश्चित करने के लिए फिर से परीक्षण किया, और यह ठीक काम करता है। –

+0

ईमानदार होने के लिए, मुझे नहीं लगता कि इससे कोई फर्क नहीं पड़ता। 2.0 को लक्षित करते समय इसे ठीक काम करना चाहिए, क्योंकि स्वचालित गुण केवल एक शॉर्टेंड हैं कि संकलक नियमित रूप से नियमित गुणों में फैलता है। –

1

वह त्रुटि आपके द्वारा पोस्ट किए गए कोड से नहीं आनी चाहिए। एमएसडीएन के मुताबिक, आपने यह सही किया है: http://msdn.microsoft.com/en-us/library/bb384054.aspx

इसलिए मैं आपको त्रुटि संदेश दोबारा जांचने की सलाह दूंगा, और जहां संकलक कहता है कि त्रुटि आ रही है। आपके द्वारा पोस्ट किए गए संदेश के पाठ में गुणों का संदर्भ शामिल नहीं था, और कार्यों के लिए एक समान संदेश है ... कुछ भी जो कार्यान्वयन खो रहा है और इंटरफ़ेस या चिह्नित अमूर्त या बाहरी पर नहीं, यह त्रुटि उत्पन्न कर सकता है।

ऑटो-संपत्ति सी # 3.0 भाषा/कंपाइलर की एक विशेषता है। यदि आप वीएस 2008 का उपयोग कर रहे हैं, तो यह काम करना चाहिए भले ही आप .NET 2.0 को लक्षित कर रहे हों। मैं यह सुनिश्चित करने के लिए बस इसका परीक्षण किया।

0

यह कच्चे वेब साइट प्रोजेक्ट पर भी होता है जहां कोई web.config उत्पन्न नहीं हुआ था।

हालांकि समाधान फ़ाइल 3.5 ने कहा, नेट को web.config की आवश्यकता है ताकि यह पहचान सके। मैं डीबग चलाने के लिए इसे एक वेब कॉन्फिगर बनाने की इजाजत दे रहा था, और सब काम कर रहे थे।

तो यह प्रदान किए गए उत्तर की तरह है, लेकिन बस सुनिश्चित करें कि आपके पास एक है।

1

यह त्रुटि यदि आप = "MyControl.ascx.cs" अपने MyControl.ascx में CodeFile = "MyControl.ascx.cs" का उपयोग कर रहे codebehind के बजाय हो सकता है।

कोडफाइल के मामले में, 2.0 कंपाइलर पृष्ठ को पुन: संकलित करने का प्रयास करता है, भले ही आपके पास वेबसाईट की बजाय वेबप्रोजेक्ट हो और निश्चित रूप से विफल हो।

विशेषता नाम बदलना कोडबहाइंड मेरे मामले में समस्या को ठीक करता है।