Переменная не увеличивается в C # Release x64 - PullRequest
8 голосов
/ 17 января 2011

Может ли кто-нибудь объяснить мне, почему этот кусок кода работает хорошо, когда я выполняю его на платформе x86 и почему он не работает на x64?

Результаты:

  • x86 Отладка: 12345678910
  • x64 Отладка: 12345678910
  • x86 Выпуск: 12345678910
  • x64 Выпуск: 1111111111

Если я что-то изменяю, например, удаляю одну из неиспользуемых переменных, или если я удаляю бесполезный цикл for после p_lFirstId ++, странное поведение исчезает.

Я обнаружил, что изменение "pdb-only" на "full" в моей конфигурации релиза снова работает.

Если вы запускаете код непосредственно из visual studio, он тоже хорошо работает.

Это ошибка JIT-компилятора?

Заранее спасибо.

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

1 Ответ

3 голосов
/ 18 января 2011

Это ошибка в CLR.Я бы посоветовал связаться с Microsoft и попросить их исправить эту ошибку в следующем выпуске.

...