升级Azure Functions至1.0.8版本后运行失败求助
解决Azure Functions加载Microsoft.WindowsAzure.Storage失败的问题
嘿,这种版本不匹配的坑我踩过好多次了!尤其是手动升级Azure Functions NuGet包又添加Storage引用之后,很容易出现这个ScriptHost错误。给你几个靠谱的解决步骤:
1. 对齐Storage包的版本
首先得确保你项目里的Microsoft.WindowsAzure.Storage版本和Azure Functions 1.0.8依赖的版本完全一致——也就是错误提示里的8.6.0.0:
- 右键项目,选「管理NuGet程序包」
- 找到
Microsoft.WindowsAzure.Storage,如果当前版本不是8.6.0,直接安装这个版本 - 顺便检查下
Microsoft.Azure.WebJobs、Microsoft.Azure.WebJobs.Extensions这些核心包,确保都是1.0.8版本,别出现版本参差不齐的情况
2. 加个绑定重定向强制指定版本
有时候哪怕装对了版本,运行时还是会瞎找旧版本,这时候手动加个绑定重定向就能搞定:
- 在项目根目录新建或者修改
app.config文件,把下面的配置贴进去:
<configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Microsoft.WindowsAzure.Storage" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-8.6.0.0" newVersion="8.6.0.0" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>
这个配置会告诉运行时,不管找哪个版本的Storage组件,都统一用8.6.0.0的版本。
3. 清理缓存后重新生成
有时候项目的bin/obj文件夹里缓存了旧的程序集,导致冲突,这时候:
- 右键项目选「清理」
- 再选「重新生成」
- 要是还不行,直接手动删掉项目目录下的
bin和obj文件夹,然后重新生成一次
4. 检查本地Functions Runtime版本
最后确认下本地用的Azure Functions Core Tools版本是否和你的NuGet包匹配:
- 打开命令行,运行
func --version看看版本号 - 如果是1.x系列的老版本,升级到1.x的最新版,确保和1.0.8的NuGet包兼容
对了,还有个小提醒:以后尽量别单独升级某个Azure Functions相关的NuGet包,最好是批量升级所有WebJobs和Functions相关的包,这样能最大程度避免这种版本冲突的问题。
内容的提问来源于stack exchange,提问作者Oddleif
相关产品推荐
相关产品推荐

