在更新了所有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
开启和关闭。换句话说,我已经尝试了一切。这是怎么回事?
答案 0 :(得分:1)
您需要解决此问题的所有方法是更新所有项目中的所有PRISM和Unity相关软件包。编辑不需要的绑定重定向。
详见codeplex
答案 1 :(得分:1)
您是否尝试过将绑定重定向更改为:
<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.3.0.0" newVersion="1.3.0.0" />
</dependentAssembly>
</assemblyBinding>
请注意,我只将oldVersion上限从 1.2.0.0 更改为 1.3.0.0 以捕获最高1.3的任何版本并重定向。
答案 2 :(得分:1)
确保配置文件中的引用实际上使用的是正确的版本。它们可能与NuGet安装的内容不同步。
答案 3 :(得分:1)
在你的例子中没有给出,但可能会帮助其他人像我一样在这里结束。
确保您没有错误的.NET版本集。
e.g。使用.NET 4 +时,appliesTo="v2.0.50727"
将无效。
<assemblyBinding appliesTo="v2.0.50727" xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.Practices.ServiceLocation" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.3.0.0" newVersion="1.3.0.0" />
</dependentAssembly>
</assemblyBinding>