在AppHarbor部署MVC项目遇MySql.Data引用错误,如何排查来源?
兄弟,这个问题我在部署.NET项目到AppHarbor时踩过坑,给你梳理几个排查方向,一步步来应该能解决:
排查步骤
1. 先确认本地项目的NuGet包状态
- 打开Visual Studio的NuGet包管理器,检查已安装的MySql.Data包版本是不是正好是
6.9.9.0,有没有出现缺失或者黄色感叹号的标记。 - 直接打开项目的
.csproj文件,查看引用节点是否正确:
要确保<Reference Include="MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL"> <HintPath>..\packages\MySql.Data.6.9.9\lib\net45\MySql.Data.dll</HintPath> </Reference>HintPath指向的路径在本地磁盘上确实存在对应的dll文件,版本也完全匹配。
2. 检查AppHarbor的构建配置
- AppHarbor默认会自动还原NuGet包,但有时候会出问题。去你的AppHarbor项目设置里,找到构建选项,确认“自动还原NuGet包”是开启状态。
- 如果你本地的
packages文件夹没有提交到Git仓库,AppHarbor构建时就找不到这个包。要么把MySql.Data.6.9.9整个目录提交到代码仓库,要么确认NuGet.org上还能获取到这个版本的包(虽然是旧版本,但大概率还是能找到的)。
3. 验证项目目标框架的兼容性
- 检查你的MVC项目的目标.NET框架版本,MySql.Data 6.9.9.0支持的是.NET Framework 4.5及以上版本,如果你的项目目标是4.0或者更低,肯定会出现引用错误。
4. 本地模拟AppHarbor的构建流程
- 用MSBuild命令行在本地复现构建过程,看看是不是本地就有问题:
如果本地也弹出同样的警告,那问题就出在本地项目配置,和AppHarbor环境无关。msbuild LebaneseCarParts.csproj /p:Configuration=Release /p:Platform="Any CPU"
5. 检查程序集绑定重定向
- 打开项目的
Web.config,找到<runtime>下的<assemblyBinding>节点,看看有没有针对MySql.Data的绑定重定向,确保重定向的版本和你引用的6.9.9.0一致:<dependentAssembly> <assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-6.9.9.0" newVersion="6.9.9.0" /> </dependentAssembly>
内容的提问来源于stack exchange,提问作者Ahmad M Ibrahim
相关产品推荐
相关产品推荐

