Ошибка контейнера Unity при использовании Prism Modularity и включении Unity по источникам - PullRequest
0 голосов
/ 04 августа 2011

Я получаю сообщение об ошибке при попытке использовать Prism4 Bootstrapper с Unity, на который ссылается источник (включить существующие решения в решение).Я также получаю сообщение об ошибке построения Unity из исходного кода и затем включаю выходные файлы.

Вот подробности:

У меня есть проект, использующий Prism4.Компонент Bootstrapper для Prism использует Unity 2.0.Для меня, если быть более точным, они полагаются на версию 2.0.414.0 единицы.

Если я попытаюсь включить текущую или более новую версию Prism в Мой проект как Prism 4, тогда VS выдаст мне сообщение для создания некоторого приложения..config код, который вызывает загрузку новейшей сборки.</p> <pre><code><runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Microsoft.Practices.Unity" publicKeyToken="31BF3856AD364E35" culture="neutral"/> <bindingRedirect oldVersion="0.0.0.0-2.1.505.0" newVersion="2.1.505.0"/> </dependentAssembly> </assemblyBinding> </runtime>

При использовании готовых dll-файлов для Unity 2.0 и Unity 2.1 это работает без проблем ...

Однако, если я попытаюсьчтобы собрать их из исходного кода и использовать новые библиотеки DLL или включить проекты непосредственно в мой проект, я всегда получаю сообщение об ошибке:

The type 'Microsoft.Practices.Unity.IUnityContainer' is defined in an assembly that is not referenced. You must add a reference to assembly 'Microsoft.Practices.Unity, Version=2.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.

Имейте в виду, что Unity 2.0 [b] IS [/ b] версии 2.0.414,0.Поэтому моей первой попыткой было использование исходной базы Unity 2.0.Я также сделал много последующих попыток, используя эту версию, в том числе начиная с нового проекта.Я попытался включить Prism с помощью предварительно созданных bin-файлов, исходного кода и пользовательских dll с тем же результатом.Я также пробовал все те же вещи, используя Unity 2.1, в надежде, что он может работать.

Моя среда MSVC # 2010 win7 x64.Я собрал под x86 и Any CPU конфигурации, а также отладку и выпуск.Единственными зависимостями являются Призма и Единство.

1 Ответ

0 голосов
/ 05 августа 2011

Найден обходной путь.

Я открыл решение для источника Prism и удалил все ссылки на единство.Затем я добавил проект Unity как существующий проект в решение призмы.Наконец, я упомянул единство как проект для всех заинтересованных проектов призмы.Итак, Unity DLL, который я собираюсь использовать для своего проекта, выводится через призму unityextensions.

Некоторые обновления пакетных файлов позже и вуаля, обходной путь.Я готов идти дальше.

PS Строка темы неверна.Это проблема UnityExtensions в призме, а не в модульности.Кроме того, я не был уверен в UnityBootstrapper, когда назвал его "

...