Azure 调试时未能加载ServiceBus程序集

Azure 调试时未能加载ServiceBus程序集,azure,azure-web-roles,servicebus,azureservicebus,Azure,Azure Web Roles,Servicebus,Azureservicebus,我正在将azure服务总线功能实现到客户端asp.net webforms解决方案中 worker角色定期轮询总线以获取新消息,并为现有webforms应用程序定义web角色,该应用程序负责将消息添加到总线队列中 每当我尝试在本地运行应用程序时,我都会收到一个错误,因为Microsoft.ServiceBus程序集与预期的不匹配 System.IO.FileLoadException was unhandled HResult=-2146234304 Message=Could not

我正在将azure服务总线功能实现到客户端asp.net webforms解决方案中

worker角色定期轮询总线以获取新消息,并为现有webforms应用程序定义web角色,该应用程序负责将消息添加到总线队列中

每当我尝试在本地运行应用程序时,我都会收到一个错误,因为Microsoft.ServiceBus程序集与预期的不匹配

 System.IO.FileLoadException was unhandled
  HResult=-2146234304
  Message=Could not load file or assembly 'Microsoft.ServiceBus, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
  Source=Azure.EnquiryWorker
  FileName=Microsoft.ServiceBus, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
  FusionLog==== Pre-bind state information ===
LOG: User = *Omitted*
LOG: DisplayName = Microsoft.ServiceBus, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
 (Fully-specified)
LOG: Appbase = file:///C:/Users/*path omitted*/*project name omitted*/csx/Debug/roles/Azure.EnquiryWorker/approot
LOG: Initial PrivatePath = C:\Users\*path omitted*/*project name omitted*\csx\Debug\roles\Azure.EnquiryWorker\approot
Calling assembly : Azure.EnquiryWorker, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Users\*path omitted*/*project name omitted*\csx\Debug\roles\Azure.EnquiryWorker\approot\Azure.EnquiryWorker.dll.config
LOG: Using host configuration file: 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
LOG: Post-policy reference: Microsoft.ServiceBus, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
LOG: Attempting download of new URL file:///C:/Users/*path omitted*/*project name omitted*/csx/Debug/roles/Azure.EnquiryWorker/approot/Microsoft.ServiceBus.DLL.
WRN: Comparing the assembly name resulted in the mismatch: Minor Version
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.

  StackTrace:
       at Azure.EnquiryWorker.WorkerRole.OnStart()
       at Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.InitializeRoleInternal(RoleType roleTypeEnum)
       at Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.InitializeRole(RoleType roleType)
       at Microsoft.WindowsAzure.ServiceRuntime.Implementation.Loader.RoleRuntimeBridge.<InitializeRole>b__0()
       at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException: 
System.IO.FileLoadException未处理
HResult=-2146234304
消息=无法加载文件或程序集“Microsoft.ServiceBus,版本=2.0.0.0,区域性=中性,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。定位的程序集清单定义与程序集引用不匹配。(来自HRESULT的异常:0x8013100)
Source=Azure.inquiryworker
文件名=Microsoft.ServiceBus,版本=2.0.0.0,区域性=中性,PublicKeyToken=31bf3856ad364e35
FusionLog===预绑定状态信息===
LOG:User=*省略*
日志:DisplayName=Microsoft.ServiceBus,版本=2.0.0.0,区域性=neutral,PublicKeyToken=31bf3856ad364e35
(详细说明)
日志:Appbase=file:///C:/Users/*路径省略*/*项目名称省略*/csx/Debug/roles/Azure.inquiryworker/approt
日志:Initial PrivatePath=C:\Users\*路径省略*/*项目名称省略*\csx\Debug\roles\Azure.inquiryworker\approot
调用程序集:Azure.InquiryWorker,版本=1.0.0.0,区域性=中性,PublicKeyToken=null。
===
日志:此绑定在默认加载上下文中启动。
日志:使用应用程序配置文件:C:\Users\*路径省略*/*项目名称省略*\csx\Debug\roles\Azure.inquiryworker\approot\Azure.inquiryworker.dll.config
日志:使用主机配置文件:
日志:使用C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config中的计算机配置文件。
日志:发布策略参考:Microsoft.ServiceBus,版本=2.0.0.0,区域性=中性,PublicKeyToken=31bf3856ad364e35
日志:正在尝试下载新URLfile:///C:/Users/*路径省略*/*项目名称省略*/csx/Debug/roles/Azure.inquiryworker/approt/Microsoft.ServiceBus.DLL。
警告:比较程序集名称导致不匹配:次要版本
错误:未能完成程序集的设置(hr=0x8013100)。调查结束了。
堆栈跟踪:
在Azure.inquiryWorker.WorkerRole.OnStart()上
在Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.InitializeRoleInternal(RoleType RoleTypeNum)上
位于Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.InitializeRole(RoleType RoleType)
在Microsoft.WindowsAzure.ServiceRuntime.Implementation.Loader.RoleRuntimeBridge.b_u0()中
位于System.Threading.ExecutionContext.RunInternal(ExecutionContext ExecutionContext、ContextCallback回调、对象状态、布尔值preserveSyncCtx)
在System.Threading.ExecutionContext.Run(ExecutionContext ExecutionContext,ContextCallback回调,对象状态,布尔保存SyncCTX)
在System.Threading.ExecutionContext.Run(ExecutionContext ExecutionContext,ContextCallback回调,对象状态)
位于System.Threading.ThreadHelper.ThreadStart()处
内部异常:
webforms应用程序在bin文件夹中有serviceBus dll(作为间接引用添加,因为服务总线代码驻留在库项目中)


GAC不包含servicebus程序集,我的项目都引用servicebus dll的v2,并设置为CopyLocal。

要帮助调试此功能,如果GAC中有Microsoft.servicebus.dll,您能否在本地计算机上确认?还要检查该版本是否与您在项目中引用的版本不同

您的项目似乎没有DLL,或者没有正确版本的DLL。构建应用程序并查看/bin文件夹。如果找到DLL(Microsoft.ServiceBus.DLL),请检查版本并确保其匹配(版本=2.0.0.0)。如果找不到它,它可能在全局程序集缓存中

如果这对您没有帮助,请尝试: 1.在引用属性中设置copylocal=true,以便将DLL复制到输出目录中。
2.使用nuget软件包管理器链接到Microsoft.Servicebus dll。它通常可以解决很多类似的问题。

当我将Azure ServiceBus Nuget包更新到2.1版时,这个问题很方便地解决了。

GAC不包含ServiceBus程序集,我的项目都引用ServiceBus dll的v2,并设置为CopyLocal。GAC不包含ServiceBus程序集,我的项目都引用servicebus dll的v2,并设置为CopyLocal。