在对所有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包)仍然引用旧版本。但是这应该是可以的,因为我已经将一个bindingRedirect添加到我的app.config文件中:
<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 Framework4.5.1的,我已经在AutoGenerateBindingRedirects上和off上尝试过了。换句话说,我什么都试过了。这里发生什么事情?
发布于 2015-01-10 19:13:19
要解决这个问题,您所需要的就是更新所有项目中与PRISM和统一相关的软件包。不需要编辑绑定重定向。
参见关于codeplex的详细信息
发布于 2015-01-14 23:06:56
您是否尝试过将绑定重定向更改为:
<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的版本并将其重定向。
发布于 2015-01-16 20:25:00
确保配置文件中的引用确实使用了正确的版本。它们可能与NuGet安装的内容不同步。
https://stackoverflow.com/questions/26475938
复制相似问题