azure之ASP.NET 5/Azure 错误 : FileNotFoundException: Could not load file or assembly System. Data.SqlClient
我正在使用 VS2015 将 ASP.NET 5 应用程序部署到 Azure。成功部署并在浏览器中打开我的网站后,我收到错误:
FileNotFoundException:无法加载文件或程序集“System.Data.SqlClient,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。系统找不到指定的文件。 我的项目中没有直接引用该程序集。它是通过 EntityFramework.MicrosoftSqlServer 程序集的间接依赖。
我在使用 ASP.NET 4 时遇到了类似的问题,解释如下:Error: No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.SqlClient' 当时,名为“可怕的黑客”的解决方案对我有用。 :)
您是否知道可能导致该问题的原因以及如何解决该问题?
这是我的网络应用程序project.json的内容:
{
"userSecretsId": "aspnet5-MyProject.Web-<A guid goes here>",
"version": "1.0.0-*",
"compilationOptions": {
"emitEntryPoint": true
},
"dependencies": {
"EntityFramework.Commands": "7.0.0-rc1-final",
"EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
"Microsoft.AspNet.Authentication.Cookies": "1.0.0-rc1-final",
"Microsoft.AspNet.Diagnostics.Entity": "7.0.0-rc1-final",
"Microsoft.AspNet.Identity.EntityFramework": "3.0.0-rc1-final",
"Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
"Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
"Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final",
"Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
"Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
"Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-final",
"Microsoft.Extensions.CodeGenerators.Mvc": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.FileProviderExtensions": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.UserSecrets": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final",
"Microsoft.Framework.CommandLineUtils.Sources": "1.0.0-beta5",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-rc1-final",
"MyProject.Data": "1.0.0-*",
"System.Data.SqlClient": "4.0.0-beta-23516" <-- I've tried with this explicit dependency here
},
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel",
"ef": "EntityFramework.Commands"
},
"frameworks": {
"dnxcore50": { }
},
"exclude": [
"wwwroot",
"node_modules"
],
"publishExclude": [
"**.user",
"**.vspscc"
],
"scripts": {
"prepublish": [ "npm install", "bower install", "gulp clean", "gulp min" ]
}
}
以及 MyProject.Web 所依赖的 MyProject.Data 项目的 project.json:
{
"version": "1.0.0-*",
"description": "MyProject.Data Class Library",
"authors": [ "f012rt" ],
"tags": [ "" ],
"projectUrl": "",
"licenseUrl": "",
"frameworks": {
"dnxcore50": {
"dependencies": {
"Microsoft.CSharp": "4.0.1-beta-23516",
"System.Collections": "4.0.11-beta-23516",
"System.Linq": "4.0.1-beta-23516",
"System.Runtime": "4.0.21-beta-23516",
"System.Threading": "4.0.11-beta-23516"
}
}
},
"commands": {
"ef": "EntityFramework.Commands"
},
"dependencies": {
"EntityFramework.Commands": "7.0.0-rc1-final",
"EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
"EntityFramework.Core": "7.0.0-rc1-final",
"Microsoft.AspNet.Identity.EntityFramework": "3.0.0-rc1-final",
"Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final",
"System.Runtime.Serialization.Primitives": "4.1.0-beta-23516",
"System.Data.SqlClient": "4.0.0-beta-23516" <-- I've tried with this explicit dependency here
}
}
我已尝试显式指定缺少的依赖项,正如您从我的project.json 文件中看到的那样。我可以确认包 "System.Data.SqlClient": "4.0.0-beta-23516"位于我的 [approot]\packages 文件夹中。包文件夹在我的本地计算机上看起来与此完全相同。我尝试在新创建的 Web 应用程序上进行部署,以避免旧部署引起的任何问题。错误还是一样。
请您参考如下方法:
我认为您希望将 System.Data.SqlClient 依赖项从 dependencies 移至 frameworks\dnxcore50\dependencies 中,如下所示:
"frameworks": {
"dnx451": { },
"dnxcore50": {
"dependencies": {
"System.Data.SqlClient": "4.0.0-beta-23516"
}
}
}
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。



