2016-09-13 4 views
1

Начиная с чистого универсального приложения Windows, я добавил Autofac 4.1, Autofac.Extras.CommonServiceLocator 4.0 и MvvmLightLibs 5.3. Затем я создал следующий класс ViewModelLocator.Дизайнер XAML «Не удалось загрузить файл или сборку Autofac 4.1» в приложении App.xaml приложения UWP с использованием MVVMLight

using Autofac; 
using Autofac.Extras.CommonServiceLocator; 
using GalaSoft.MvvmLight.Views; 
using Microsoft.Practices.ServiceLocation; 

namespace UwpTest 
{ 
    public class ViewModelLocator 
    { 
     public static IContainer Container { get; private set; } 
     public static bool IsBuilt { get; set; } 

     public ViewModelLocator() 
     { 
      if (!IsBuilt) 
      { 
       var builder = new ContainerBuilder(); 
       builder.RegisterType<DialogService>().As<IDialogService>(); 
       builder.RegisterType<NavigationService>().As<INavigationService>(); 

       Container = builder.Build(); 

       IsBuilt = true; 
      } 

      ServiceLocator.SetLocatorProvider(() => new AutofacServiceLocator(Container)); 
     } 
    } 
} 

Затем в App.xaml я добавил локатор модели представления в качестве ресурса.

<Application 
    x:Class="UwpTest.App" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="using:UwpTest" 
    RequestedTheme="Light"> 
    <Application.Resources> 
     <ResourceDictionary> 
      <local:ViewModelLocator x:Key="ViewModelLocator" /> 
     </ResourceDictionary> 
    </Application.Resources> 
</Application> 

На данный момент я получаю следующее сообщение об ошибке:

Could not load file or assembly 'Autofac, Version=4.1.0.0, Culture=neutral, PublicKeyToken=17863af14b0044da' or one of its dependencies. The system cannot find the file specified.

Все прекрасно работает во время выполнения, но не во время разработки. Я дважды проверяю, что все пакеты были восстановлены. Как найти местоположение, которое разработчик пытается загрузить с сайта Autofac? Или что мне не хватает о том, как проект настроен?

Я уже был с MSDN guide to troubleshooting design time issues, попытался отладить проблему, используя второй экземпляр Visual Studio, и искал ответ во всех отношениях, о которых я могу думать.

Репо с репо номера можно найти here.

+0

Учитывая это конкретно время проблема разработки, должен вы следовали шагам, как в [руководстве MSDN по вопросам времени проектирования и устранения неисправностей] (https://msdn.microsoft.com/en-us/library/ bb546934 (v = vs.110) .aspx) или искали другие ответы о сбоях нагрузки во время разработки? –

+0

У меня есть попытка подключить отладчик, используя другой экземпляр Visual Studio. У меня не было успеха ни с одним из них. – elanderson

+0

Возможно, вам необходимо обновить свой вопрос с информацией о том, что вы уже пробовали, чтобы люди знали, с чего начать, а не повторять работу, которую вы уже сделали. –

ответ

0

Загрузив ваш project, я воспроизвел вашу проблему. Решение для устранения этой ошибки легко, просто удалите пакет Autofac 4.1.1, все будет хорошо.

Это связано с тем, что при установке пакета NuGet Autofac.Extras.CommonServiceLocator NuGet он поможет вам установить зависимости, которые содержат пакет Autofac в то же время. Вам не нужно устанавливать пакет Autofac самостоятельно. Когда вы установили Autofac.Extras.CommonServiceLocator 4.0.0, это поможет вам установить Autofac 3.5.0. Если вы устанавливаете другую версию Autofac, это может привести к двусмысленности.

Если вы хотите добавить два пакета одновременно, пожалуйста, обновите версию Autofac от 4.1.1 до 3.5.0. И все будет хорошо, но я не думаю, что это необходимо.

Как я знаю, Auofac - это версия 3.5.0, пожалуйста, см. Следующую картинку. Если вы попытались установить Autofac 4.11 после установки Autofac.Extras.CommonServiceLocator 4.0.0, вы получите сообщение об обновлении около Autofac от 3.5.0 до 4.1.1.

enter image description here

+0

Пакет дает это как зависимость: Autofac (> = 3.5.0 && <5.0.0), поэтому не должно быть проблем с обновлением до 4.1.1 – Bart

+0

@Bart, 'Autofac' в последний раз обновляется в' Thursday, 22 сентября 2016 года ',' Autofac.Extras.CommonServiceLocator' в последний раз обновляется в 'Tuesday, June 28, 2016'. Обновление поддерживается для 'Auofac'' Autofac.Extras.CommonServiceLocator' недоступно. Зависимость показывает, по крайней мере, запрос на версию. Другими словами, «Auofac 5.0.0» сейчас не существует, не так ли? Это может быть поддержка версий в будущем. –

+0

Я попытался использовать bindingregirect, но разработчик, похоже, тоже не уважает это. Не уверен, что это ошибка в VS или другая проблема. Интересный случай ... но сейчас я должен уйти на работу. – Bart

 Смежные вопросы

  • Нет связанных вопросов^_^