在更新了所有NuGet软件包后,我的一个应用程序在启动时出现了FileLoadException
崩溃:
Could not load file or assembly 'Microsoft.Practices.ServiceLocation, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies.
在将ServiceLocation
升级到1.3.0.0版本后,我仔细检查了所有程序集以确保它们都使用该版本。然后我运行了Fuslogvw
来诊断仍在引用旧版本的程序集:
LOG: DisplayName = Microsoft.Practices.ServiceLocation, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
(Fully-specified)
LOG: Appbase = file:///C:/Users/Charlie/AppData/Local/Programs/MyClient/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = MyClient.exe
Calling assembly : Microsoft.Practices.Prism.UnityExtensions, Version=5.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35.
===
因此,UnityExtensions
(另一个NuGet软件包)仍在引用旧版本。但这应该没问题,因为我已经在我的app.config文件中添加了bindingRedirect
:
<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.3.0.0" />
</dependentAssembly>
</assemblyBinding>
但这似乎没有任何区别。我的应用程序是定位于.NET Framework 4.5.1的,并且我已经尝试了开启和关闭AutoGenerateBindingRedirects
选项。换句话说,我尝试了所有方法。这里出了什么问题?