【问题标题】:Obfuscation removes datacontext class混淆删除 datacontext 类
【发布时间】:2013-12-12 21:47:24
【问题描述】:

我正在尝试使用 EAZfuscator 混淆我的 Winforms 应用程序。当我尝试运行经过混淆的应用程序时,我得到了一个实体框架异常 (ProviderIncompatibleException)。

使用 IlSpy 查看经过混淆的程序集 - 我注意到虽然我的大多数命名空间和类保持原样(它似乎只是一些已重命名的变量名),但它已完全删除了我的 DataContext 类(即. 派生自 DbContext)。

我认为我的 ProviderIncompatibleException 异常是由于连接字符串的名称需要与数据上下文类名称匹配。我的 app.config 中有这个:

<add name="DsDataContext" connectionString="Data Source=Database.sdf" providerName="System.Data.SqlServerCe.4.0" />

其中 DsDataContext 是派生自 DbContext 的类的名称(似乎已被 Eazfuscator 删除的类)。

以前有人经历过吗? Eazfuscator 删除了这个类的任何原因?另外,我很好奇为什么我的班级名称保持不变。混淆似乎不是很混淆。

更新

以下是完整性的例外。我想我得到它是因为我上面提到的缺少课程:

类型:System.Data.ProviderIncompatibleException

消息:从数据库获取提供程序信息时发生错误。这可能是由 Entity Framework 使用不正确的连接字符串引起的。检查内部异常以获取详细信息并确保连接字符串正确。

来源 = 实体框架

堆栈跟踪:

  at System.Data.Entity.ModelConfiguration.Utilities.DbProviderServicesExtensions.GetProviderManifestTokenChecked(DbProviderServices providerServices, DbConnection connection)
  at System.Data.Entity.ModelConfiguration.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.CreateObjectContextForDdlOps()
  at System.Data.Entity.Database.Exists()
  at   .()
  at   .()

【问题讨论】:

  • 你能指示混淆器...不要混淆那个类吗?

标签: c# .net entity-framework obfuscation eazfuscator


【解决方案1】:

或者也许你的类被混淆器重命名了。

尝试将ObfuscationAttribute 添加到您的数据上下文类中:

[ObfuscationAttribute(Exclude=true)]

【讨论】:

  • 太好了,成功了!虽然很烦人,但我也不得不将属性添加到所有实体类中,因为我得到了未知的键错误,其中键是随机字符!感谢您的帮助:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-07
  • 1970-01-01
  • 2011-03-09
  • 1970-01-01
  • 1970-01-01
  • 2017-01-25
  • 1970-01-01
相关资源
最近更新 更多