Pull to refresh

Неописанное блокирующее изменение в 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 ""».


    Пути решения


Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.