1

EAZfuscator を使用して Winforms アプリを難読化しようとしています。難読化されたアプリを実行しようとすると、Entity Framework 例外 (ProviderIncompatibleException) が発生します。

IlSpy を使用して難読化されたアセンブリを確認すると、ほとんどの名前空間とクラスはそのまま残っていますが (名前が変更された変数名のように見えます)、DataContext クラスが完全に削除されていることに気付きました (つまり、 DbContext から派生します)。

私の ProviderIncompatibleException 例外は、接続文字列の名前が datacontext クラス名と一致する必要があるためだと思います。私は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 が原因である可能性があります。内部例外で詳細を確認し、接続文字列が正しいことを確認してください。

ソース = EntityFramework

スタックトレース:

  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   .()
4

1 に答える 1