2015-04-17 7 views
1

Я столкнулся с ошибкой с тестовым приложением WPF, которое я использую, чтобы узнать Prism. Журнал ошибок ниже, но суть в том, что он не может найти Microsoft.Practices.Unity версии 3.5.1.0. По моему мнению, это может означать две вещи: либо он не может найти ни одну версию Unity, либо находит неправильный номер версии Unity.Как решить «Не удалось загрузить файл или сборку« Ошибка Microsoft.Practices.Unity »?

Чтобы исключить первый вариант (по крайней мере, я считаю, что это исключает его) Я дважды проверял, что DLL установлена ​​в проектах, которые нуждаются в ней, и в папке bin; в каждом проекте и папке bin есть только одна копия Unity. Он установлен, но по описанию свойств он говорит, что версия 3.5.0.0. В обозревателе объектов говорится, что dll находится в папке под названием «Unity.3.5.1404.0». Обратите внимание, что dll была установлена ​​с использованием NuGet, и две группы пакетов, которые я установил, называются «Prism» и «Prism.UnityExtensions». Это вторая, в которой находится dll Unity.

Интересно, что я на самом деле начал новый учебный проект, чтобы понять, устранит ли он проблему и скопирует некоторые части проектов из оригинала. Я смог скомпилировать и запустить его в первый раз, но затем я вынул раздел кода из файла App.config, чтобы узнать, что произойдет (немой ошибка ...), и начал получать ту же ошибку. Это происходит даже после того, как я добавил его обратно в файл App.config. Обратите внимание, что код, приведенный ниже, был в файле App.config, когда я создал проект; это не то, что я лично добавил позже.

Есть ли где-то еще я должен искать dll, которые могут вызывать проблемы? Есть ли что-то, что мне нужно добавить или удалить, чтобы текущая dll Unity работала?


код, где происходит ошибка (на bootstrapper.Run, это в App.xaml.cs):

protected override void OnStartup(StartupEventArgs e) 
    { 
     base.OnStartup(e); 

     Bootstrapper bootstrapper = new Bootstrapper(); 
     bootstrapper.Run(); 
    } 

Код:

<startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="Microsoft.Practices.ServiceLocation" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-1.2.0.0" newVersion="1.2.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Microsoft.Practices.Prism.SharedInterfaces" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-1.1.1.0" newVersion="1.1.1.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Microsoft.Practices.Unity" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-3.5.1.0" newVersion="3.5.1.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 

Ошибка:

System.IO.FileLoadException was unhandled HResult=-2146234304 Message=Could not load file or assembly 'Microsoft.Practices.Unity, Version=3.5.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) Source=Microsoft.Practices.Prism.UnityExtensions FileName=Microsoft.Practices.Unity, Version=3.5.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 FusionLog="" StackTrace: at Microsoft.Practices.Prism.UnityExtensions.UnityBootstrapper.Run(Boolean runWithDefaultConfiguration) at Microsoft.Practices.Prism.Bootstrapper.Run() at EmailClient.App.OnStartup(StartupEventArgs e) in c:\Users\Roger\Google Drive\Karnaluks\Test Projects\EmailClient\EmailClient\App.xaml.cs:line 21 at System.Windows.Application.<.ctor>b__1(Object unused) at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler) at System.Windows.Threading.DispatcherOperation.InvokeImpl() at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Windows.Threading.DispatcherOperation.Invoke() at System.Windows.Threading.Dispatcher.ProcessQueue() at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o) at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler) at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs) at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam) at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg) at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame) at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame) at System.Windows.Threading.Dispatcher.Run() at System.Windows.Application.RunDispatcher(Object ignore) at System.Windows.Application.RunInternal(Window window) at System.Windows.Application.Run(Window window) at System.Windows.Application.Run() at EmailClient.App.Main() in c:\Users\Roger\Google Drive\Karnaluks\Test Projects\EmailClient\EmailClient\obj\Debug\App.g.cs:line 50 at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart() InnerException: System.IO.FileLoadException HResult=-2146234304 Message=Could not load file or assembly 'Microsoft.Practices.Unity, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) FileName=Microsoft.Practices.Unity, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 FusionLog==== Pre-bind state information === LOG: DisplayName = Microsoft.Practices.Unity, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 (Fully-specified) LOG: Appbase = file:///C:/Users/Roger/Google Drive/Karnaluks/Test Projects/EmailClient/EmailClient/bin/Debug/ LOG: Initial PrivatePath = NULL Calling assembly : Microsoft.Practices.Prism.UnityExtensions, Version=5.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35. LOG: This bind starts in default load context. LOG: Using application configuration file: C:\Users\Roger\Google Drive\Karnaluks\Test Projects\EmailClient\EmailClient\bin\Debug\EmailClient.vshost.exe.Config LOG: Using host configuration file: LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. LOG: Redirect found in application configuration file: 3.5.0.0 redirected to 3.5.1.0. LOG: Post-policy reference: Microsoft.Practices.Unity, Version=3.5.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 LOG: Attempting download of new URL file:///C:/Users/Roger/Google Drive/Karnaluks/Test Projects/EmailClient/EmailClient/bin/Debug/Microsoft.Practices.Unity.DLL. WRN: Comparing the assembly name resulted in the mismatch: Build Number ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.

InnerException: 

ответ

0

Вы пробовали очистить и перестроить решение? Также может быть удалена установка пакетов, а затем их установка. Этот код app.xaml добавляется при установке пакетов Nuget.

+0

Эй, спасибо за ответ. Я просто попробовал как очистить, так и перестроить решение, но я столкнулся с той же ситуацией. Я удалил и установил пакеты несколько раз и просто попробовал еще раз. С кодом, добавленным пакетами NuGet, я получаю ту же ошибку, что и в моем сообщении, но при этом она удаляется, программа получает дальнейшее и создает окно, но затем сбой происходит с ошибкой, с которой я работал [ранее] (http: // stackoverflow.com/questions/29537911/how-to-resolve-could-not-load-file-or-assembly-microsoft-practices-prism-er), который я никогда не мог исправить. Вид тупой ха. –

+0

Выполнение одной и той же проблемы. Пробовал несколько вещей, включая предложения, упомянутые выше. –

+0

Если вы найдете исправление Майка, дайте мне знать! Мои поиски не привели никуда. –

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