2013-03-04 51 views
26

我遇到以下问题:为Silverlight 5应用程序添加编码UI支持时,为什么System.Core无法加载?

尝试添加对Silverlight 5应用程序([MSDN] [1])创建编码UI测试的支持。第一步是在Silverlight 5项目中引用程序集Microsoft.VisualStudio.TestTools.UITest.Extension.SilverlightUIAutomationHelper.dll。不幸的是,参考已被添加之后,项目停止与多个类似的错误进行编译:

>

Error 25 Cannot resolve reference assemblies. Please check the reference assemblies. Could not load file or assembly 'System.Core, Version=5.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) ....\ErrorReportDialog.xaml 


Looks like System.Core 5.0.5.0 fails to load, okay, debugging assemblies loading with Fuslogw produces two interesting logs: 

First log: 

> Assembly Binder Log Entry (04.03.2013 @ 14:07:49) 
The operation was successful. 
Bind result: hr = 0x0. The operation completed successfully. 
Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll 
Running under executable C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe 
A detailed error log follows. 
=== Pre-bind state information === 
LOG: DisplayName = System.Core, Version=5.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e 
(Fully-specified) 
LOG: Appbase = file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/ 
LOG: Initial PrivatePath = NULL 
LOG: Dynamic Base = NULL 
LOG: Cache Base = NULL 
LOG: AppName = MSBuild.exe 
Calling assembly : System.Windows, Version=5.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e. 
LOG: This bind starts in LoadFrom load context. 
WRN: Native image will not be probed in LoadFrom context. Native image will only be probed in default load context, like with Assembly.Load(). 
LOG: Using application configuration file: C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe.Config 
LOG: Using host configuration file: 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. 
LOG: Post-policy reference: System.Core, Version=5.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e 
LOG: Binding succeeds. Returns assembly from C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v5.0\System.Core.dll. 
LOG: Assembly is loaded in LoadFrom load context. 

Looks like System.Core, Version=5.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e loads succesfully. 

But second log entry produces the following error: 

> Assembly Binder Log Entry (04.03.2013 @ 14:07:49) 
The operation failed. 
Bind result: hr = 0x80131040. No description available. 
Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll 
Running under executable C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe 
A detailed error log follows. 
Pre-bind state information 
LOG: DisplayName = System.Core, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e 
(Fully-specified) 
LOG: Appbase = file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/ 
LOG: Initial PrivatePath = NULL 
LOG: Dynamic Base = NULL 
LOG: Cache Base = NULL 
LOG: AppName = MSBuild.exe 
Calling assembly : Microsoft.VisualStudio.TestTools.UITest.Extension.SilverlightUIAutomationHelper, Version=10.0.30319.381, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a. 
LOG: This bind starts in default load context. 
LOG: Using application configuration file: C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe.Config 
LOG: Using host configuration file: 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. 
LOG: Redirect found in application configuration file: 2.0.5.0 redirected to 5.0.5.0. 
LOG: Post-policy reference: System.Core, Version=5.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e 
LOG: The same bind was seen before, and was failed with hr = 0x80131040. 
ERR: Unrecoverable error occurred during pre-download check (hr = 0x80131040). 

貌似Microsoft.VisualStudio.TestTools.UITest.Extension.SilverlightUIAutomationHelper.dll尝试加载System.Core,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e,但被重定向到System.Core,Version = 5.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e(已从第1个日志载入),但仍然失败加载。

Can anyone provide some insight on how to further debug this problem? I'm compiling Silverlight projects for AnyCpu platform. 


    [1]: http://msdn.microsoft.com/en-us/library/gg413374.aspx 
+2

System.Core,Version = 2.0.5.0当然是问题所在。较旧版本的程序集,用于以前版本的Silverlight。他们没有完成VS2012,检查这[博客文章](http://blogs.msdn.com/b/bharry/archive/2012/07/09/coded-ui-testing-support-for-silverlight的.aspx)。 – 2013-03-04 14:15:23

+0

我用VS2010检查过它 - 从machine.config重定向不起作用。由于项目引用5.0.5.0,它会产生一个无法找到System.Core 2.0.5.0的错误。奇怪,因为我们使用.Net Framework本身的相同版本。 – Cortlendt 2013-03-05 08:41:49

+0

@HansPassant:你认为将该链接作为答案发布是个好主意吗?我知道这不是一个完美的解决方案,但我认为这可能是最好的选择。 – 2013-06-03 16:18:09

回答

1

,以确认SilverlightUIAuthomationHelper需要System.Core程序的版本,请执行下列操作:

  1. 找到磁盘上所引用的DLL SilverlightUIAuthomationHelper。
  2. 将其加载到任何反汇编器/反射器中 - 例如dotPeek或Reflector。引用的程序集的
  3. 检查版本 - System.Core程序必须是2.0.5.0在SilverlightUIAuthomationHelper版本

可能的解决方案:

  1. 更新SilverlightUIAuthomationHelper到新版本(链接在汉斯帕桑特评论)引用新的System.Core DLL(版本5.0.5.0)
  2. 由于fuslogvw说,重定向从2.0.5.0到5.0.5.0位于应用程序配置文件 - 尝试找到并删除此重定向(details here)。但是其他的东西很可能会被打破。
相关问题