我试图获得一个库,该库需要System.Threading.Dll才能与我的.NET 3.5 web应用程序项目一起使用。由于3.5没有System.Threading.Dll,我按照提示安装了Reactive扩展,因为它有3.5的System.Threading的后端口版本。
尝试仍然失败了,在足够的挫折之后,我放弃了,完全放弃了分支机构。
现在,在我原来没有任何实验工作的分支中,我得到了这个错误。
[BadImageFormatException: Could not load file or assembly 'System.Reactive.Windows.Threading' or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.]
这个错误是有道理的。毫无意义的是,为什么它一开始就试图加载System.Reactive.Windows.Threading程序集?解决方案中没有提及它。我甚至从操作系统中完全卸载了扩展。
这是绑定信息。
=== Pre-bind state information ===
LOG: User = IIS APPPOOL.NET v2.0
LOG: DisplayName = System.Reactive.Windows.Threading
(Partial)
LOG: Appbase = file:///C:/GitHub/v44/Web/
LOG: Initial PrivatePath = C:GitHubv44Webbin
Calling assembly : (Unknown).
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:GitHubv44Webweb.config
LOG: Using host configuration file: C:WindowsMicrosoft.NETFramework64v2.0.50727Aspnet.config
LOG: Using machine configuration file from C:WindowsMicrosoft.NETFramework64v2.0.50727configmachine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/Temporary ASP.NET Files/root/65a2449d/ebe221c1/System.Reactive.Windows.Threading.DLL.
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/Temporary ASP.NET Files/root/65a2449d/ebe221c1/System.Reactive.Windows.Threading/System.Reactive.Windows.Threading.DLL.
LOG: Attempting download of new URL file:///C:/GitHub/v44/Web/bin/System.Reactive.Windows.Threading.DLL.
ERR: Failed to complete setup of assembly (hr = 0x8013101b). Probing terminated.
是什么让.NET认为它需要加载此程序集?
找到它了。因此,在我的解决方案中确实没有对反应式扩展的依赖。然而,需要它的旧图书馆仍然留在我的垃圾箱文件夹中。卸载nuget软件包不会删除它们。一旦nuget包被移除,看起来Clean不会移除它们。
以下是我认为发生的事情。所以它们放在我的bin文件夹中,git忽略了这个文件夹,所以切换分支不会删除它们。NET在bin文件夹中看到它们,尽管不需要它们,但还是尝试加载它们。我还必须彻底清除工作区中所有被忽略的文件。
git clean -fxd
从那里开始建设,我很乐意去。
当你说你"安装"了Rx是什么意思?你使用了哪个NuGet软件包?您的项目有哪些Rx参考?确保只使用Rx-Main
。听起来您可能使用了一种包含Rx-Xaml的口味(如Rx-WPF或Rx-Silverlight)。Rx-Xaml加载System.Reactive.Windows.Threading.
http://blogs.msdn.com/b/rxteam/archive/2012/08/15/reactive-extensions-v2-0-has-arrived.aspx描述了不同的软件包及其包含的内容。