【问题标题】:Could not load file or assembly 'EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'无法加载文件或程序集 'EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
【发布时间】:2016-08-28 15:39:27
【问题描述】:

我正在使用 ASP.NET 5 和 Entity Framework 6(确切地说是 6.1.3),遵循 link。尝试了所有不同的解决方案,例如

  1. appconfig 中版本的报废
  2. 添加<dependentAssembly>
  3. 使用 Update-Package -reinstall EntityFramework 再次重新安装 EntityFramework 6
  4. 检查 EntityFramwork.SqlServer
  5. 已清除 %temp% 并进行了干净构建以及独立重建

这里出错了

[DbConfigurationType(typeof(CodeConfig))]    
public class MyContext : DbContext
{
public MyContext()
        : base("DefaultConnection") <-- error here
    {
    }
 }

但仍然无法解决此错误,任何有用的链接将不胜感激

无法加载文件或程序集“EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”或其依赖项之一。系统找不到指定的文件。":"EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"

堆栈跟踪

at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
   at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
   at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
   at System.Activator.CreateInstance(Type type, Boolean nonPublic)
   at System.Data.Entity.Utilities.TypeExtensions.CreateInstance[T](Type type, Func`2 exceptionFactory)
   at System.Data.Entity.Utilities.TypeExtensions.CreateInstance[T](Type type, Func`3 typeMessageFactory, Func`2 exceptionFactory)
   at System.Data.Entity.Infrastructure.DependencyResolution.DbConfigurationManager.<.ctor>b__1()
   at System.Lazy`1.CreateValue()
   at System.Lazy`1.LazyInitValue()
   at System.Lazy`1.get_Value()
   at System.Data.Entity.Infrastructure.DependencyResolution.DbConfigurationManager.GetConfiguration()
   at System.Data.Entity.Infrastructure.DependencyResolution.InternalConfiguration.get_Instance()
   at System.Data.Entity.DbConfiguration.get_DependencyResolver()
   at System.Data.Entity.DbContext.InitializeLazyInternalContext(IInternalConnection internalConnection, DbCompiledModel model)
   at System.Data.Entity.DbContext..ctor(String nameOrConnectionString)
   at myproject.data.myprojectContext..ctor() in D:\Projects\Personal\myproject\myproject.data\myprojectContext.cs:line 12
   at myproject.data.Infrastructure.DatabaseFactory.Get() in D:\Projects\Personal\myproject\myproject.data\Infrastructure\DatabaseFactory.cs:line 9
   at myproject.data.Repository`1.get_DataContext() in D:\Projects\Personal\myproject\myproject.data\Repository.cs:line 28
   at myproject.data.Repository`1..ctor(IDatabaseFactory databaseFactory) in D:\Projects\Personal\myproject\myproject.data\Repository.cs:line 21
   at myproject.data.Repository.ProfileRepository..ctor(IDatabaseFactory databaseFactory) in D:\Projects\Personal\myproject\myproject.data\Repository\ProfileRepository.cs:line 9

Web.Config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <connectionStrings>
    <add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="...." />
  </connectionStrings>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
</configuration>

【问题讨论】:

  • 能否尝试在C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files和Clean Solution下正常清理临时文件?
  • 另外,尝试right click solution → clean solution → and rebuild 我之前遇到的问题是,当我遇到此错误时,多个公钥令牌条目已添加到我的app.config。是不是很奇怪
  • 最坏的情况,你能不能完全删除它,然后重新安装而不是重新安装?
  • @Win yes 确实清除了 %temp% 并且也重新安装了
  • @brykneval 你的目录结构是什么,EntityFramework.SqlServer.dll 在哪里?

标签: c# asp.net asp.net-mvc entity-framework-6 asp.net5


【解决方案1】:

首先检查您使用的是哪个版本的 EF。检查您的版本。 如果你想升级你的版本,你可以从 NuGet 管理 EF 升级。

转到您的项目解决方案->“管理解决方案的 NuGet 数据包”,单击“实体框架”上的“管理”。

现在,检查您的 app.config 。也许这里错误的版本号。 name="entityFramework" 应该有正确的版本号。

除此之外,您应该尝试在包管理器控制台中使用以下命令为 EntityFramework.SqlServer 安装 nuget 包。

Install-Package EntityFramework.SqlServer -Version 7.0.0-beta6 -Pre

【讨论】:

    【解决方案2】:

    base(DbContext 构造函数)的参数可以是nameOrConnectionString。见DbContext(string)。 所以你应该在参数字符串中添加name=

    [DbConfigurationType(typeof(CodeConfig))]    
    public class MyContext : DbContext
    {
        public MyContext()
            : base("name=DefaultConnection")
        {
        }
    }
    

    另见此示例:Derived context

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-14
      • 2019-03-18
      • 2017-07-02
      • 1970-01-01
      • 2013-02-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多