Проблема с отсутствующими ссылками при обновлении Prism 7.1 - PullRequest
0 голосов
/ 11 февраля 2019

Недавно хотел перенести мое приложение WPF Prism на 7.1, и при этом я получаю сообщения об отсутствующих ссылках в отношении Unity.Abstractions.

Обновлены пакеты нугетов Prism до Prism7.1, как показано в packages.configниже:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="CommonServiceLocator" version="2.0.4" targetFramework="net472" />
  <package id="Prism.Core" version="7.1.0.431" targetFramework="net472" />
  <package id="Prism.Unity" version="7.1.0.431" targetFramework="net472" />
  <package id="Prism.Wpf" version="7.1.0.431" targetFramework="net472" />
  <package id="System.Runtime.CompilerServices.Unsafe" version="4.5.2" targetFramework="net472" />
  <package id="System.ValueTuple" version="4.5.0" targetFramework="net472" />
  <package id="Unity.Abstractions" version="4.0.3" targetFramework="net472" />
  <package id="Unity.Container" version="5.9.4" targetFramework="net472" />
</packages>

Код App.xaml, как показано ниже:

<prism:PrismApplication x:Class="WPFPrismDemoApp.App"
                x:ClassModifier="internal" 
                xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                xmlns:prism="http://prismlibrary.com/">
    <Application.Resources>
    </Application.Resources>
</prism:PrismApplication>

Код App.xaml.cs, как показано ниже:

 public partial class App : PrismApplication
    {
        protected override Window CreateShell()
        {
            return null;
        }

        protected override void InitializeShell(Window shell)
        {
            base.InitializeShell(shell);
            Application.Current.MainWindow = shell;
            var container= Container.GetContainer();
        }

При выполнении этого, когда япопытаться получить доступ к контейнеру единства через Container.GetContainer, я получаю следующее исключение: тип 'IUnityContainer' определен в сборке, на которую нет ссылок.Вы должны добавить ссылку на сборку «Unity.Abstractions, версия 3.3.1.0».Я не понимаю, когда я обновил пакет nuget WPF.Unity до последней доступной версии, он автоматически обновил Unity.Abstractions до 4.0.3.0.

Кто-нибудь, кто знает, как его пропустить.

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019

Пакет Unity.Container версии 5.8.x ссылается на Unity.Abstractions версии 3.3.1, а более новые версии ссылаются на версию 4.0.3.Это нарушает обратную совместимость с Bootstrapper в Prism.Если вы хотите использовать более новые версии, вам необходимо использовать новый класс PrismAplication.Вид печали.

0 голосов
/ 13 февраля 2019

Попробуйте понизить Unity до версии 5.8.x.Я думаю, что версия 5.9.x имеет другой набор библиотек DLL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...