我正在尝试使用Windows Azure缓存预览。
我有一个专用缓存工作者角色,一个使用以前缓存的webrole,以及一个持续更新缓存的辅助角色。
我跟着instructions on the Windows Azure guide,但我仍然收到错误:
无法加载文件或程序集“Microsoft.ApplicationServer.Caching.Core,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)
我将三倍1000000检查依赖关系,有正确的。
我注意到有两组dll:我想要使用的版本1.0.0.0,以及我不想要的另一个版本101.0.0.0。
我在所有.config文件中添加了BindingRedirect
语句,将101个版本映射到1.0.0.0
我检查了\ bin文件夹,用Jetbrains反编译了dll,它们是正确的。
我开始失去耐心。为什么.NET在我放置显式路径时不采用我指定的DLL?
答案 0 :(得分:2)
好的我找到了另一种方式: 我刚刚将C:\ Program Files \ Microsoft SDKs \ Windows Azure.NET SDK \ 2012-06 \ ref \ Microsoft.ApplicationServer.Caching.Core.dll重命名为Microsoft.ApplicationServer.Caching.Core.dll_old。
这是我想要的。
以下是对该问题的更具体描述:在单独执行项目时,它似乎工作得很好:我有3个工作者角色和1个Web角色。 每次我逐个构建我的项目时,我在输出目录中看到了正确的dll,我只遇到了Windows Azure Cloud包的问题,它似乎忽略了BindingRedirect指令。
答案 1 :(得分:1)
只是建议存放在相关位置。
我遇到了问题中描述的问题,唯一的区别是它无法找到Caching.Client而不是Caching.Core。我尝试删除SDK ref文件夹中的库,如前面的答案所示,但它没有帮助。
无论如何,我的解决方案似乎相当特别。
在我的案例中有帮助的是我找到了一些未被引用的库,但是在我的项目工作的唯一环境中的包中找到了它们。他们来了: * System.Web.Providers.1.1 * System.Web.Providers.Core.1.0
由于某种原因,他们在packages.config文件中被遗漏,因此无法从nuget feed续订。 因此,您可以尝试直接引用它们或以其他方式使它们可供您尝试运行的项目访问。
答案 2 :(得分:1)
AppFabric未设置为在安装后注册自己的DLL。
您必须手动注册它们。 在powershell中运行它来修复所有内容:
Set-location "C:\Program Files\AppFabric 1.1 for Windows Server"
[System.Reflection.Assembly]::Load("System.EnterpriseServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")
$publish = New-Object System.EnterpriseServices.Internal.Publish
$publish.GacInstall("C:\Program Files\AppFabric 1.1 for Windows Server\Microsoft.ApplicationServer.Caching.Core.dll")
$publish.GacInstall("C:\Program Files\AppFabric 1.1 for Windows Server\Microsoft.ApplicationServer.Caching.Client.dll")
$publish.GacInstall("C:\Program Files\AppFabric 1.1 for Windows Server\Microsoft.WindowsFabric.Common.dll")
$publish.GacInstall("C:\Program Files\AppFabric 1.1 for Windows Server\Microsoft.WindowsFabric.Data.Common.dll")
iisreset