我有一个项目启动并运行2011年11月的SDK,最近升级到2012年6月的SDK。当我第一次看到错误时,我尝试了显而易见的 - 删除引用并添加更高版本,但这没有帮助。不知怎的,似乎仍在请求版本1.0.0.0。我也试图删除引用并添加旧版本,但没有运气。
以下是我在代码中的显示方式。现在命中的第一个Trace.WriteLine报告以下异常:
System.IO.FileLoadException未被用户代码Message = Can处理 不加载文件或程序集'Microsoft.WindowsAzure.Diagnostics, Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或 其中一个依赖项。定位程序集的清单定义 与装配参考不匹配。 (HRESULT的例外情况: 0x80131040)来源= mscorlib
FileName = Microsoft.WindowsAzure.Diagnostics,Version = 1.0.0.0, Culture = neutral,PublicKeyToken = 31bf3856ad364e35 FusionLog ==== 预绑定状态信息===日志:用户= NT AUTHORITY \ NETWORK SERVICE LOG:DisplayName = Microsoft.WindowsAzure.Diagnostics, Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35 (完全指定)LOG:Appbase = file:/// F:/ SVNProjects / myproject / SitePagesWebRole / LOG:Initial PrivatePath = F:\ SVNProjects \ myproject \ SitePagesWebRole \ bin调用 汇编:(未知)。 ===日志:此绑定在默认加载上下文中启动。日志:使用应用程序配置文件: F:\ SVNProjects \ myproject \ SitePagesWebRole \ web.config日志:使用主机 配置文件: C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet.config日志: 使用来自的机器配置文件 C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 \ CONFIG \ machine.config中。 日志:政策后参考:Microsoft.WindowsAzure.Diagnostics, Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35 LOG: 试图下载新的URL 文件:/// C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET 文件/根/ b117acb8 / f2404402 / Microsoft.WindowsAzure.Diagnostics.DLL。 日志:尝试下载新网址 文件:/// C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET 文件/根/ b117acb8 / f2404402 / Microsoft.WindowsAzure.Diagnostics / Microsoft.WindowsAzure.Diagnostics.DLL。 日志:尝试下载新网址 文件:/// F:/SVNProjects/myproject/SitePagesWebRole/bin/Microsoft.WindowsAzure.Diagnostics.DLL。 警告:比较程序集名称导致不匹配:次要 版本错误:无法完成装配设置(hr = 0x80131040)。 探测终止。堆栈跟踪: at System.RuntimeTypeHandle.GetTypeByName(String name,Boolean throwOnError,Boolean ignoreCase,Boolean reflectionOnly, StackCrawlMarkHandle stackMark,Boolean loadTypeFromPartialName, ObjectHandleOnStack类型) at System.RuntimeTypeHandle.GetTypeByName(String name,Boolean throwOnError,Boolean ignoreCase,Boolean reflectionOnly, StackCrawlMark&安培; stackMark,Boolean loadTypeFromPartialName) 在System.Type.GetType(String typeName) at System.Diagnostics.TraceUtils.GetRuntimeObject(String className,Type baseType,String initializeData) 在System.Diagnostics.TypedElement.BaseGetRuntimeObject() 在System.Diagnostics.ListenerElement.GetRuntimeObject() 在System.Diagnostics.ListenerElementsCollection.GetRuntimeObject() 在System.Diagnostics.TraceInternal.get_Listeners() 在System.Diagnostics.TraceInternal.WriteLine(String message) at myproject.GameAPI.Login(Int64 fbid,Int64 [] friends)在F:\ SVNProjects \ myproject \ GameLogic \ GameAPI.cs:第119行
的InnerException:
如何解决这个问题?
答案 0 :(得分:14)
检查web.config / app.config以获取所有角色。确保将对Microsoft.WindowsAzure.Diagnostics程序集的任何引用的版本号更改为版本 1.7.0.0
答案 1 :(得分:2)
您的web / worker角色项目中的所有azure程序集引用都应指向1.7.0.0版本。您的ccproj文件应包含
<ProductVersion>1.7</ProductVersion>
确保Azure实例包含正确的基本程序集。
您还可以检查Microsoft.WindowsAzure.Diagnostics
是否已复制到输出/天蓝色包中。
答案 2 :(得分:1)
上面的内容对我来说不起作用(我看到的所有内容都说1.7),而是我浏览了每个项目,删除并重新添加了以下开头的任何引用:
Microsoft.WindowsAzure.*
重新添加时,请确保版本为1.7。