错误“无法加载文件”但我没有要求它

时间:2014-12-18 21:19:26

标签: .net vb.net entity-framework

更新:我为x86重新编译,现在它可以工作了。但我仍然需要知道这里发生了什么,以及为什么我需要将我的所有.net应用程序重新编译为x86 ...我从未使用过oracle,我不打算将来这样做。为什么它让我有问题?

从今天早上起,我无法运行所有使用entityframework-v5连接到msSqlServer的.net程序,我在下面粘贴了堆栈错误。

我在网络上的其他电脑上尝试过相同的文件,它确实可以正常工作。所以我怀疑它的Windows更新在一夜之间就麻烦了,所以我做了系统恢复,仍然是同样的问题。

现在我用完了想法..我不使用oracle,我没有任何参考。正如我在同一文件夹中说的那些文件一样,昨天在我的电脑上工作,今天他们也可以从网络上的其他电脑上工作。

    System.BadImageFormatException: Could not load file or assembly 'System.Data.OracleClient.dll' or one of its dependencies.  is not a valid Win32 application. (Exception from HRESULT: 0x800700C1)
   at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type)
   at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName)
   at System.Type.GetType(String typeName)
   at System.Data.Common.DbProviderFactories.IncludeFrameworkFactoryClasses(DataTable configDataTable)
   at System.Data.Common.DbProviderFactories.Initialize()
   at System.Data.EntityClient.EntityConnection.GetFactory(String providerString)
   at System.Data.EntityClient.EntityConnection.ChangeConnectionString(String newConnectionString)
   at System.Data.Entity.Internal.LazyInternalConnection.Initialize()
   at System.Data.Entity.Internal.LazyInternalConnection.CreateObjectContextFromConnectionModel()
   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.Infrastructure.DbQuery`1.System.Linq.IQueryable.get_Provider()
   at System.Linq.Queryable.Where[TSource](IQueryable`1 source, Expression`1 predicate)

2 个答案:

答案 0 :(得分:1)

This question表示您已在计算机上安装了32位版本的Oracle客户端组件。

您的堆栈跟踪显示以下内容:

  1. 您触发实体框架操作。
  2. 实体框架想要读取您的连接字符串。
  3. 它需要初始化系统上安装的所有数据库提供程序。
  4. 它找到Oracle并尝试加载它。
  5. 失败了,因为依赖关系不支持64位。
  6. 您应该在确保没有其他软件依赖它之后完全卸载Oracle客户端,或者另外安装64位版本,如上面链接的答案中所述。

答案 1 :(得分:0)

我真的没有问题的答案。我花了几天时间试图解决它,但没有成功。

我完全重新安装了Windows,这解决了这个问题。

我真的希望它不会再次发生,安装Windows(并重新安装所有程序)不是我想经常做的事情......