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