Как стать автором
Поиск
Написать публикацию
Обновить

Неописанное блокирующее изменение в Microsoft Enterprise Library Validation Block 5.0

Неописанное блокирующее изменение в Microsoft Enterprise Library Validation Block 5.0


Если в Вашем проекте используется Microsoft Enterprise Library Validation Block — следует быть осторожным при переходе с версии 4.1.2 на версию 5.0. Помимо блокирующих изменений
описанных в документации существует еще одно (надеюсь только одно) неприятное отличие:


Если Ваше приложение использует сборку Microsoft.Practices.EnterpriseLibrary.Validation.dll не из собственной директории, а из GAC, то после обновления версии Enterprise Library валидация работать перестанет.


Что бы проиллюстрировать ошибку достаточно выполнить следующий тест


  1. Положите библиотеки из Microsoft Enterprise Library 5.0 в GAC

  2. Создайте простое консольное приложение, содержащее следующий код:



      class Program
      {
        static void Main()
        {
          Microsoft.Practices.EnterpriseLibrary.Validation.Validation.Validate(new Model());
        }
      }

      public class Model
      {
        [NotNullValidator]
        public string Name { get; set; }
      }


    * This source code was highlighted with Source Code Highlighter.
  3. Поставьте ссылку на Microsoft.Practices.EnterpriseLibrary.Validation.dll из GAC (также не забудьте подключить System.ComponentModel.DataAnnotations.dll – эта сборка необходима для использования NotNullValidatorAttribute )


  4. Если Вы совершили все действия в правильной последовательности, то после запуска Вы получите исключение ActivationException с сообщением «Activation error occured while trying to get instance of type ValidatorFactory, key ""».


    Пути решения


Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.