2009-07-30 11 views
27

मुझे विजुअल स्टूडियो 2010 के अंदर से कोड संविदा ठीक से काम कर रही है, लेकिन मुझे कमांड लाइन से कुछ भी उपयोगी करने के लिए ccrewrite.exe नहीं मिल सकता है। यहां एक नमूना अनुप्रयोग है:ccrewrite.exe कमांड लाइन से कुछ भी क्यों नहीं कर रहा है?

using System.Diagnostics.Contracts; 

public class Dummy 
{ 
    public static void Main(string[] args) 
    { 
     Contract.Requires(args.Length > 0); 
    } 
} 

मैं फिर उस पर कोड और रन ccrewrite.exe संकलन:

> csc /debug+ /D:CONTRACTS_FULL Dummy.cs 

> ccrewrite /o:RewrittenDummy.exe Dummy.exe 
elapsed time: 61ms 

कोई RewrittenDummy.exe फ़ाइल बाद में है।

मैंने विकल्पों के लोड की कोशिश की है, लेकिन कुछ भी कोई फर्क नहीं पड़ता है। कुछ बातें मैंने देखा है:

  • यह निश्चित रूप से, Dummy.exe लोड हो रहा है क्योंकि अगर मैं एक गैर-मौजूद फ़ाइल निर्दिष्ट है, यह मर जाता है
  • Dummy.exe निश्चित रूप से अनुबंध के संदर्भ हैं - अगर मैं इसे साथ चलाने कोई तर्क है, यह उचित रूप से विफल रहता है (लेकिन त्रुटि संदेश में भरा नहीं किया गया है के रूप में मैं अगर यह फिर से लिखा गया था उम्मीद थी)
  • postconditions और अपरिवर्तनशीलताओं का उपयोग करते हुए कोई फर्क नहीं

मैं चेतावनी मोड़ की कोशिश की है बनाता है और verbosity ऊपर, और यह सभी पर मदद नहीं करता है क्या मैं गलत कर रहा हूँ?

(इसके अलावा एक question in the Code Contracts forum के रूप में पूछा। मैं किसी भी प्रासंगिक जवाब यहां अपने आप को जोड़ देंगे।)

उत्तर

19

ठीक है, यह answered in the MSDN forum किया गया है। एक बार, यह वास्तव में पूरी तरह से बेवकूफ नहीं था - यह ऐसा कुछ है जो वास्तव में चेतावनी के साथ कर सकता है।

पूर्ण विवरण के लिए मंच पोस्ट पढ़ें, लेकिन मूल समस्या यह है कि ccrewrite अनुबंध कक्षाएं नहीं मिल सका: यह .NET 4.0 एक के बजाय mscorlib के .NET 3.5 सीएलआर संस्करण में देख रहा था।

> ccrewrite /o:rewrittendummy.exe dummy.exe 
    /libpaths:%SystemRoot%\Microsoft.Net\Framework\v4.0.20506 
+1

मैं कहां से यह पंक्ति जोड़ें:

यह स्पष्ट रूप से प्रासंगिक विधानसभा के लिए पथ लिस्टिंग द्वारा निर्धारित किया जा सकता है? – Pedro77

+0

Ive ने मेरे सभी अनुबंधों पर टिप्पणी की और पुराने और अच्छे में लौट आए! = शून्य ... ccrewrite बहुत छोटी है। – Pedro77

+0

@ पेड्रो 77: यह कहना मुश्किल है कि इन टिप्पणियों से आपकी समस्या क्या है। शायद एक नया सवाल खोलें? –