में वृद्धि नहीं कर रहा है क्या कोई मुझे बता सकता है कि जब मैं इसे x86 प्लेटफॉर्म पर निष्पादित करता हूं और यह x64 पर क्यों विफल रहता है तो कोड का यह टुकड़ा अच्छा क्यों कर रहा है?परिवर्तनीय सी # रिलीज x64
परिणाम:
- 86 डीबग: 12345678910
- 64 डीबग: 12345678910
- 86 रिलीज: 12345678910
- 64 रिलीज: 1111111111
अगर मैं बदल कुछ, को हटाने की तरह अप्रयुक्त चरों में से एक, या यदि मैं p_lFirstId ++ के बाद बेकार फॉर-लूप को हटा देता हूं, तो अजीब व्यवहार गायब हो जाता है।
मैंने पाया कि मेरी रिलीज कॉन्फ़िगरेशन में "पीडीबी-केवल" "पूर्ण" में बदलना, यह फिर से काम करता है।
यदि आप सीधे दृश्य स्टूडियो से कोड चलाते हैं, तो यह भी अच्छा प्रदर्शन कर रहा है।
क्या यह एक जेआईटी कंपाइलर बग है?
अग्रिम धन्यवाद।
class Program
{
static void Main(string[] args)
{
Test(null, null, null, 0, 1);
}
public static void Test(
List<string> liste, List<string> unused1,
string unused2, int unused3, long p_lFirstId)
{
liste = new List<string>();
StringBuilder sbSql = new StringBuilder();
for (int i = 0 ; i < 10 ; i++)
{
sbSql.Append(p_lFirstId);
p_lFirstId++;
foreach (string sColonne in liste)
{
}
}
System.Console.WriteLine(sbSql.ToString());
}
}
फिर समाधान को पुनर्निर्माण करें, मैं किसी कारण से शर्त लगाता हूं कि यह किसी पुराने डीएलएल पर कहीं लटक रहा है। – msarchet
आपको एक जेआईटी ऑप्टिमाइज़र बग मिला। मैं इसे जांचने के लिए x64 के करीब नहीं हूं। इसे connect.microsoft.com पर पोस्ट करें, सावधानी से दस्तावेज़ को न भूलें कि आप जिस .NET का उपयोग कर रहे हैं उसका कौन सा संस्करण उपयोग कर रहे हैं। यह अन्यथा 3.5 के लिए जिटर में एक बग जैसा दिखता है (SP1 नहीं)। –
क्या होता है यदि आप पैरामीटर चर को संशोधित करने के बजाय स्थानीय प्रतिलिपि को संशोधित करने की घोषणा करते हैं? मुझे लगता है कि यह निर्णायक नहीं होगा, हालांकि, ऐसा लगता है जैसे यह एक हिसनबग है। – Rup