Azure:无法加载文件或程序集'Microsoft.ServiceBus'

5
我有一个App Fabric服务需要测试(http://xxx.cloudapp.net:8081/service.svc)。我创建了一个控制台应用程序,并添加了一个服务引用,但出现以下错误:

无法加载文件或程序集'Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'或其依赖项之一。系统找不到指定的文件。

我从C:\Program Files (x86)\Windows Azure platform AppFabric SDK\V1.0\Assemblies\NET4.0 添加了对Microsoft.ServiceBus的引用。
http://msdn.microsoft.com/en-us/library/ee706702.aspx所建议,我将我的项目中的所有程序集设置为Copy Local=True。
额外的尽职调查: 我在red-gate的反编译工具Reflector中打开了Microsoft.ServiceBus并确认它是正确的版本。仅仅为了好玩,我还添加了与Reflector中引用的每个程序集的引用,并将所有引用设置为Copy Local = True。

还有其他的想法吗?

...Peter


当您调用服务时,错误是由服务抛出的还是在尝试运行控制台应用程序时由控制台应用程序抛出的? - knightpfhor
当我尝试调用服务中的某个方法时,它会从控制台应用程序中抛出异常。 - Peter Walke
3个回答

4

请确保您将目标框架(项目属性/应用程序选项卡)从“ .NET Framework 4 Client Profile”更改为“ .NET Framework 4”。

我找到了一个类似的帖子,那就是帮助我的地方。我相信这与 Microsoft.ServiceBus 不受 .NET 4 客户端配置文件支持有关。


3
当您引用Microsoft.ServiceBus.dll时,请从安装位置引用它,例如,
C:\Program Files (x86)\Windows Azure platform AppFabric SDK\V1.0\Assemblies\NET4.0\Microsoft.ServiceBus.dll
而不是从GAC引用,并将Copy Local设置为true。
您需要在部署到Azure的任何内容中执行此操作;Microsoft.ServiceBus.dll需要与您的项目一起打包,因为在Azure中默认情况下不可用。
如果启动Fiddler,则在调用服务时会看到500错误。这证明异常不在您的调用应用程序中。

1

在 Azure 盒子上未安装 ServiceBus dll

  1. 确保您对程序集的引用指定为 COPY LOCAL
  2. 还要确保您没有在不复制本地的上层项目中引用服务总线 dll(如果已验证步骤 1,则可能是您的问题)

您可以检查 CSX 树以查看是否将程序集复制到最终包中的 Azure 构建文件夹。这比上传到 Azure 或启动开发人员工具更快。

这应该解决您的问题。


感谢Rajesh的回复。我不明白你所说的Azure盒子上没有安装ServiceBus是什么意思。按照我的理解,微软不会在他们自己的盒子上没有安装Azure所需的dll文件。结果证明,我需要将它添加到Azure项目中,这样它就会被安装到Azure盒子上。 - Peter Walke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接