none
Нестабильное состояние программы после применения утилиты CCRewrite (из состава Code Contracts) RRS feed

  • Вопрос

  • Пишу тему WPF. Некоторое время назад все контролы разом стали вести себя не предсказуемо. Например, свойство Width вдруг принимает значение double.NAN, потому что DependencyObject == null, хотя понятно, что класс существует и инициализирован.

    Путём экспериментов выяснилось, что причина кроется в утилите CCRewrite из состава CodeContracts, которая изменяет IL код сборки из-за выставленой рантайм проверки. Сборка подписывается, и в окошке Output после отрабатывания CCRewiter меня смутила следующая надпись:

     

      Microsoft (R) .NET Framework Strong Name Utility  Version 3.5.30729.1

      Copyright (c) Microsoft Corporation.  All rights reserved.  

      Assembly successfully re-signed

    Хотя сборка написана с использованием .Net Framework 4.

     


    18 ноября 2011 г. 3:36

Все ответы

  • А есть ли подтверждение того, что CodeContracts портит работоспособные сборки? Какие эксперименты вы проводили, чтобы выяснить, что во всем виноват CCRewrite?
    18 ноября 2011 г. 4:13
    Модератор
  • Включал и отключал рантайм проверку контрактов. При отключенной проверке или при включенной, но используется throw+Contact.EndContractsBlock() - всё ок, при включенной с Contect.Requires() - появляются баги.
    18 ноября 2011 г. 14:30
  • Возможно, что на это влияет не сами контракты, но они запускают какой-то процесс, который приводит к порче сборки.
    18 ноября 2011 г. 14:31
  • Какая версия студии?

    Какая версия контрактов?

    Если не сложно, покажи как и где используешь контракты?

    21 ноября 2011 г. 13:18
    Модератор
  • Visual Studio 2010 SP1 Ultimate, CodeContracts 1.4.40602.0

    Проект open-source, вот исходный код. В методе Show переменная host может быть null, несмотря на использование конструкции target ?? Desktop, где desktop - статическое поле, которое ВСЕГДА инициализируется. Так же, например, переменная width может быть 0, хотя значение вложенного свойства зависимости, из которого она получает значение, имеет значение по умолчанию 480.0. Ну и т.д.


    22 ноября 2011 г. 3:23
  • Уважаемый пользователь!

    В вашей теме отсутствует активность в течение последних 5 дней. При отсутствии каких-либо действий в течение 2 последующих дней, тема будет переведена в разряд обсуждений. Вы можете возобновить дискуссию, просто оставив сообщение в данной теме


    Для связи [mail]
    14 декабря 2011 г. 7:21