Странный замок AddFacility во время выполнения ошибка - PullRequest
1 голос
/ 19 октября 2011

Я новичок в Касле и Касл. Виндзор, так что, возможно, это вопрос новичка.

Я создал пустое консольное приложение .NET 4.0 и добавил следующие пакеты через NuGet:

  1. Средство поддержки фабрики Castle Windsor 3.0 beta 1 (3.0.2001)
  2. Замок Виндзор 3.0 бета 1 (3.0.2001)
  3. Castle Core 3.0 бета 1 (3.0.2001)
  4. Замок NHibernate средство (0.5.1.4000)
  5. Свободный NHibernate (1.3.0.717)
  6. NHibernate (3.2.0.4000)
  7. Коллекции Иези (3.2.0.4000)

и написал следующий код:

    static void Main(string[] args)
    {
        IWindsorContainer container = new WindsorContainer();

        container.AddFacility<AutoTxFacility>();
        //container.AddFacility<NHibernateFacility>();
    }

Но я получил ошибку:

GenericArguments [0], 'TService', в 'Castle.MicroKernel.Registration.RegistrationGroup`1 [S]' нарушает ограничение параметра типа 'S'.

Если переписать код и раскомментировать вторую строку AddFacility:

    static void Main(string[] args)
    {
        IWindsorContainer container = new WindsorContainer();

        //container.AddFacility<AutoTxFacility>();
        container.AddFacility<NHibernateFacility>();
    }

Я получил следующую ошибку:

Не удалось загрузить тип 'Castle.Facilities.FactorySupport.FactorySupportFacility' из сборки 'Castle.Windsor, версия = 3.0.0.0, культура = нейтральная, PublicKeyToken = 407dd0808d44fbdc'.

Я пытался добавить строку container.AddFacility<Castle.Facilities.FactorySupport.FactorySupportFacility>(); перед первым AddFacility, но это не решило проблему.

В реальном приложении я получил другую ошибку для той же самой попытки и тех же библиотек:

Не удалось загрузить файл или сборку 'Castle.Windsor, Version = 2.5.1.0, Culture = нейтральный, PublicKeyToken = 407dd0808d44fbdc' или одну из ее зависимостей. Определение манифеста обнаруженной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)

со следующим FusionLog:

=== Pre-bind state information ===
LOG: DisplayName = Castle.Windsor, Version=2.5.1.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc
(Fully-specified)
LOG: Appbase = file:///xxx.Test/bin/Debug
LOG: Initial PrivatePath = NULL
Calling assembly : Castle.Facilities.AutoTx, Version=3.0.202.2202, Culture=neutral, PublicKeyToken=407dd0808d44fbdc.
LOG: This bind starts in default load context.
LOG: Using application configuration file: xxx.Test\bin\Debug\xxx.Test.dll.config
LOG: Using host configuration file: 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
LOG: Post-policy reference: Castle.Windsor, Version=2.5.1.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc
LOG: Attempting download of new URL file:///xxx.Test/bin/Debug/Castle.Windsor.DLL.
WRN: Comparing the assembly name resulted in the mismatch: Major Version
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.

Я не понимаю, что я делаю неправильно.

1 Ответ

1 голос
/ 20 октября 2011

Похоже, что используемая вами версия AutoTx была скомпилирована с более старой версией Windsor.

Я не уверен, поддерживает ли объект Windsor 3, вероятно, лучший способ - спросить у пользователя замка googole group

...