无法加载文件或程序集"Microsoft.Practices.Unity"

bas*_*bas 16 c# assembly-loading

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

无法加载文件或程序集"Microsoft.Practices.Unity,Version = 2.0.414.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35"或其依赖项之一.

我们正在从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 }
    
    Run Code Online (Sandbox Code Playgroud)

如何找出仍然引用Unity 2.0.414.0的内容?

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

任何帮助深表感谢!

bas*_*bas 12

问题是另一个微软dll引用旧版本的统一.我发现这是偶然的,检查每个引用的dll的命名空间,并找到另一个包含"unity"的命名空间的dll.

更新:

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

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

我希望我能节省一些失去灵魂的那一天,那个人也会在这个问题上拔掉他的头发...... :)