c# - 无法加载文件或程序集 'Microsoft.Practices.Unity'

标签 c# assembly-loading

我正在尝试将 Unity 升级到版本 (2.1.505.2),但是当我运行该应用程序时,我得到以下 FileLoadException

Could not load file or assembly 'Microsoft.Practices.Unity, Version=2.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies.

我们正在从 Unity 2.0.414.0 升级到 2.1.505.2。

  • 解决方案中所有引用 Unity 的项目引用均指代 dll 的正确版本
  • Gac 中没有引用 Unity dll。 (通过检查 gacutil -l 进行双重检查)
  • 我从存档中删除了所有 Unity dll。用 powershell 仔细检查

    PS C:\> ls -rec -inc Microsoft.Practices.Unity.dll | foreach-object { "{0}`t{1}" -f $_.FullName, [System.Diagnostics.FileVersionInfo]::GetVersionInfo($_).FileVersion }
    

我如何找出什么/谁仍然指的是 Unity 2.0.414.0?

FusionLogVw 没有告诉我哪个 DLL 导致了问题。

非常感谢任何帮助!

最佳答案

问题出在另一个引用旧版本 unity 的 Microsoft dll。我发现这是偶然检查每个引用的 dll 的 namespace ,并发现另一个包含具有“统一” namespace 的 dll。

更新:

  • Microsoft.Practices.EnterpriseLibrary.Common
  • Microsoft.Practices.EnterpriseLibrary.Validation

到最新发布的版本解决了这个问题。

我希望我能为那些也在这个问题上焦头烂额的迷失灵魂挽救一天......:)

关于c# - 无法加载文件或程序集 'Microsoft.Practices.Unity',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21242497/

相关文章:

c# - 具有单个 ui 的 Winform 选项卡控件

c# - 在 C++ 和 C# 之间传递 vector 结构

c# - .NET Core 依赖注入(inject) - 如何处置手动创建的实例?

c# - 无法在 C# 中运行 Google Cloud PubSub,DLL 问题

c# - AssemblyLoadContext 是否隔离静态变量?

c# - 使用 Assembly.Load 是静态引用还是动态引用?

c# - 无法加载文件或程序集 'Microsoft.VisualStudio.TestPlatform.ObjectModel, Version=11.0.0.0'

c# - 无法从 Gridview 获取值

c# - 在不锁定文件的情况下加载程序集并保持正确的绑定(bind)上下文

c# - 如何卸载 .NET Core 中的程序集/使其可收集?