我正在尝试在当前安装在我的机器上的 TeamCity 上运行我的测试。
System.InvalidOperationException: 无法加载’ ‘ ADO.NET 提供程序System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer的实体框架提供程序类型 ‘ 。确保提供程序程序集可用于正在运行的应用程序。Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'``System.Data.SqlClient 有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=260882。
System.InvalidOperationException:
System.InvalidOperationException
无法加载’ ‘ ADO.NET 提供程序System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer的实体框架提供程序类型 ‘ 。确保提供程序程序集可用于正在运行的应用程序。Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'``System.Data.SqlClient
System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer
Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'``System.Data.SqlClient
有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=260882。
我在我的任何项目中都没有参考System.Data.Entitycodeplex 上建议的升级到 EF6 的内容。
System.Data.Entity
所以,我不确定为什么会出现这个异常。当我从 VS 运行测试时,我没有遇到任何此类异常。
我确实尝试将 CopyLocal 设置为 false 然后再次设置为 true .. 但这似乎也不起作用。
更新
我的 app.config 有以下内容。这会导致一些我不理解的行为吗?
<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> </configSections> <entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> </entityFramework> </configuration>
我在 teamcity 得到以下堆栈跟踪。
[MSTest] IntegrationTests.CrudTest+QuestionTest.Create [03:59:11][IntegrationTests.CrudTest+QuestionTest.Create] Initialization method IntegrationTests.CrudTest+QuestionTest.Initialize threw exception. System.InvalidOperationException: System.InvalidOperationException: The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' for the 'System.Data.SqlClient' ADO.NET provider could not be loaded. Make sure the provider assembly is available to the running application. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information.. [03:59:11] [IntegrationTests.CrudTest+QuestionTest.Create] at System.Data.Entity.Config.ProviderServicesFactory.GetInstance(String providerTypeName, String providerInvariantName) at System.Data.Entity.Config.ProviderServicesFactory.GetInstanceByConvention(String providerInvariantName) at System.Data.Entity.Config.DefaultProviderServicesResolver.GetService(Type type, Object key) at System.Data.Entity.Config.CachingDependencyResolver.<>c__DisplayClass1.<GetService>b__0(Tuple`2 k) at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory) at System.Data.Entity.Config.CachingDependencyResolver.GetService(Type type, Object key) at System.Data.Entity.Config.ResolverChain.<>c__DisplayClass3.<GetService>b__0(IDbDependencyResolver r) at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext() at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate) at System.Data.Entity.Config.ResolverChain.GetService(Type type, Object key) at System.Data.Entity.Config.RootDependencyResolver.GetService(Type type, Object key) at System.Data.Entity.Config.ResolverChain.<>c__DisplayClass3.<GetService>b__0(IDbDependencyResolver r) at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext() at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate) at System.Data.Entity.Config.ResolverChain.GetService(Type type, Object key) at System.Data.Entity.Config.CompositeResolver`2.GetService(Type type, Object key) at System.Data.Entity.Config.IDbDependencyResolverExtensions.GetService[T](IDbDependencyResolver resolver, Object key) at System.Data.Entity.Config.InternalConfiguration.GetService[TService](Object key) at System.Data.Entity.Config.DbConfiguration.GetService[TService](Object key) at System.Data.Entity.Utilities.DbProviderFactoryExtensions.GetProviderServices(DbProviderFactory factory) at System.Data.Entity.Infrastructure.DefaultManifestTokenService.GetProviderManifestToken(DbConnection connection) at System.Data.Entity.Utilities.DbConnectionExtensions.GetProviderInfo(DbConnection connection, DbProviderManifest& providerManifest) at System.Data.Entity.DbModelBuilder.Build(DbConnection providerConnection) at System.Data.Entity.Internal.LazyInternalContext.CreateModel(LazyInternalContext internalContext) at System.Data.Entity.Internal.RetryLazy`2.GetValue(TInput input) at System.Data.Entity.Internal.LazyInternalContext.InitializeContext() at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize() at System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext() at System.Data.Entity.Internal.Linq.InternalSet`1.ActOnSet(Action action, EntityState newState, Object entity, String methodName) at System.Data.Entity.Internal.Linq.InternalSet`1.Add(Object entity) at System.Data.Entity.DbSet`1.Add(TEntity entity) at EFRepository.Infrastructure.EFRepository`1.Add(T item) in c:\TeamCity\buildAgent\work\da2ea4e72c0e77f0\Repository\Infrastructure\EFRepository.cs:line 22 at IntegrationTests.CrudTest.Initialize() in c:\TeamCity\buildAgent\work\da2ea4e72c0e77f0\IntegrationTests\CrudTest.cs:line 34
同样的问题,但我通过 Nuget 安装了 EF 6。另一个可执行文件缺少 EntityFramework.SqlServer。我只是将 nuget 包添加到该项目中。